2014-10-19 143 views
1

我有一張存放披薩訂單的表格。該表有一個稱爲數量的值;以特定順序的比薩餅數量。我需要「創建一個查詢,按照訂單中的不同披薩數量獲得訂單分配。問題狀態爲:」您的sql查詢應該計算具有以下匹薩數量的訂單數量:1,2,3,4,5, 。6及以上6" 研究了一段時間後,我想出了這個查詢,但它不工作,我想順便在這裏是查詢,其結果在此先感謝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 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」條目下?

+1

你可以使用「範圍」而不是數量的組.. – Riad 2014-10-19 08:24:38

+0

你是什麼意思? – Alex94 2014-10-19 08:29:40

+1

請選擇一個平臺。你在使用MySQL或SQL Server嗎?他們是不同的 - 在你將它們應用於你的問題之前,你有沒有讀過關於這些標籤的內容? – 2014-10-19 15:27:21

回答

3

一種可能的方式是使用相同的CASE WHEN聲明爲GROUP BY條款,例如*:

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 statemen的簡化版本噸。用SQL Server的SQL編寫。

+0

啊,當然,謝謝! – Alex94 2014-10-19 08:59:56

-1

SELECT IF(數量> 6 '「6',數量)AS範圍,(數量*金額)AS金額 從接單

1

運行此查詢,而不是以前的一個:

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 
+1

這提出了一個錯誤 - 無效的列名稱(範圍) – Alex94 2014-10-19 08:59:27

+0

動態評估的列(如此查詢中的「範圍」)將無法在「GROUP BY」子句中識別,因此此查詢甚至不會運行 – har07 2014-10-19 08:59:53

+0

我將其運行mySQL和它顯示OK ... – Riad 2014-10-19 09:25:37