簡體   English   中英

SQL Group按自定義范圍?

[英]SQL Group By custom range?

我有一張存儲披薩訂單的桌子。 該表有一個名為quantity的值; 特定順序的比薩餅數量。 我需要“創建一個查詢,根據訂單中的不同披薩數量分配訂單。問題說明”您的SQL查詢應該計算具有以下披薩數量的訂單數量:1,2,3,4,5,研究了一段時間后,我想出了這個查詢,但它沒有按照我想要的方式工作。這是查詢及其結果。提前謝謝。

SELECT CASE 
    WHEN Quantity = 1 THEN '1 ' 
    WHEN Quantity = 2 THEN '2' 
    WHEN Quantity = 3 THEN '3 ' 
    WHEN quantity = 4 THEN '4' 
    WHEN quantity = 5 THEN '5 '  
    WHEN quantity = 6 THEN '6' 
    ELSE '>6' 
    END AS Range, COUNT(Quantity) AS Amount
FROM  orders
GROUP BY Quantity

這輸出:

Range     Amount
1         2
2         3
3         3
4         4
5         5
6         1
>6        1
>6        2
>6        2
>6        1

我將如何分組> 6范圍並計算金額。 所以它在一個'> 6'條目下?

一種可能的方法是對GROUP BY子句使用相同的CASE WHEN語句,例如*:

SELECT CASE 
    WHEN Quantity <= 6 THEN CAST(Quantity as VARCHAR(1))
    ELSE '>6' 
    END AS Range, COUNT(Quantity) AS Amount
FROM  orders
GROUP BY (CASE 
    WHEN Quantity <= 6 THEN CAST(Quantity as VARCHAR(1))
    ELSE '>6' 
    END)        

*)使用原始CASE WHEN語句的簡化版本。 用SQL Server編寫的SQL風格。

運行此查詢而不是之前的查詢:

SELECT CASE 
WHEN Quantity = 1 THEN '1 ' 
WHEN Quantity = 2 THEN '2' 
WHEN Quantity = 3 THEN '3 ' 
WHEN quantity = 4 THEN '4' 
WHEN quantity = 5 THEN '5 '  
WHEN quantity = 6 THEN '6' 
ELSE '>6' 
END AS Range, COUNT(Quantity) AS Amount
FROM  orders
GROUP BY Range

選擇IF(數量> 6,'> 6',數量)AS范圍,(數量*金額)AS金額FROM訂單

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM