2017-10-28 75 views
1

我需要幫助,我可以創建一個qquery來查找哪個服裝類別的銷售額超過50美元。
到目前爲止,我寫了這個:創建一個能夠找出服裝物品價格超過50美元的查詢

SELECT 
ITEM_TYPE.Description AS [Item Type Name], 
ITEM.ItemID * price AS [Total Spent] 
FROM ITEM 
INNER JOIN ITEM_TYPE ON ITEM.ItemTypeID = ITEM_TYPE.ItemTypeID 
INNER JOIN ORDER_ITEM ON ITEM.ItemID = ORDER_ITEM.ItemID 
where ITEM_TYPE.Description Like '%Ladies%' 

但輸出只能顯示1行「衣夫人」,銷量的80.50

回答

0

一個總我想你想一個GROUP BY子句和聚合函數SUM()

SELECT 
ITEM_TYPE.Description AS [Item Type Name], 
SUM(price) AS [Total Spent] -- ### apply SUM() 
FROM ITEM 
INNER JOIN ITEM_TYPE ON ITEM.ItemTypeID = ITEM_TYPE.ItemTypeID 
INNER JOIN ORDER_ITEM ON ITEM.ItemID = ORDER_ITEM.ItemID 
where ITEM_TYPE.Description Like '%Ladies%' 
GROUP BY ITEM_TYPE.Description -- ### add grouping for SUM() 

我懷疑你想多項price項目的ID。如果price爲訂單項的總計價格,那麼上面只是SUM(price)。如果price是商品價格,那麼您可能需要諸如SUM(price * quantity)之類的商品。

如果需要的總四捨五入到小數點後2位,使用ROUND

ROUND(SUM(ITEM.ItemID * price), 2) AS [Total Spent] -- ### apply ROUND() 
+0

謝謝更好地理解爲和組你的工作。我只需要將結果舍入爲「80.50」 – jh86

+0

@ jh86您是否使用MS SQL Server? – Bohemian

+0

是的,我正在使用MS SQL服務器 – jh86

0

你會做的總和,這是一個聚集。在應用聚合時,您必須按任何非聚合列進行分組。要對集合進行過濾,請使用HAVING指定SELECT的條件。例如:

SELECT 
ITEM_TYPE.Description AS [Item Type Name], 
SUM(ITEM.ItemID * price) AS [Total Spent] --aggregate column 
FROM ITEM 
INNER JOIN ITEM_TYPE ON ITEM.ItemTypeID = ITEM_TYPE.ItemTypeID 
INNER JOIN ORDER_ITEM ON ITEM.ItemID = ORDER_ITEM.ItemID 
where ITEM_TYPE.Description Like '%Ladies%' 
GROUP BY ITEM_TYPE.Description  --GROUP BY the non aggregate columns 
HAVING SUM(ITEM.ItemID * price) > 50 --HAVING filters the aggregate column 
+0

我需要弄清楚如何舍入到80.5 – jh86

0

,你必須使用GROUP BYHAVING條款。 GROUP BY爲組相同的描述中的所有行在一起,HAVING的價格之和過濾超過50

SELECT 
    ITEM_TYPE.Description AS [Item Type Name], 
    SUM(ITEM.ItemID * price) AS [Total Spent] 
FROM ITEM 
    INNER JOIN ITEM_TYPE ON ITEM.ItemTypeID = ITEM_TYPE.ItemTypeID 
    INNER JOIN ORDER_ITEM ON ITEM.ItemID = ORDER_ITEM.ItemID 
WHERE ITEM_TYPE.Description Like '%Ladies%' 
GROUP BY ITEM_TYPE.Description  
HAVING SUM(ITEM.ItemID * price) > 50 

由子句你願意瞭解更多關於他們https://www.w3schools.com/sql/sql_having.asp

相關問題