[英]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.