[英]Using Distinct Clause with expressions
我正在嘗試使用distinct子句將這兩個值加在一起,但是當我這樣做時,它仍然為我提供了兩個單獨的行。 最終,我想將這兩行加在一起。
基本上,這是一個跟蹤書籍,頁面,數量,價格等的數據庫。我正在嘗試查找符合某種類型(非小說類)且超過一定價格閾值的書籍的總價值。 然后,我將這兩者相乘得到值。
我的數據庫中有兩個記錄符合此描述,並且正在顯示這兩個記錄的單獨值
SELECT DISTINCT Sum([Price]*[Quantity]) AS Total_Value
FROM Merchandise INNER JOIN Book ON Merchandise.MerchID = Book.ISBN
GROUP BY Book.Genre, Merchandise.Price, Merchandise.Quantity
HAVING (((Book.Genre)="Nonfiction") AND ((Merchandise.Price)>18));
注意:我基於MS Access標簽提交了此答案。 但是,我認為它在SQL Server中應該可以正常工作,但是對MySQL卻一無所知。
GROUP BY Book.Genre, Merchandise.Price, Merchandise.Quantity
要求針對這3個字段的每個唯一組合單獨GROUP BY Book.Genre, Merchandise.Price, Merchandise.Quantity
一行。 由於只需要一行,因此從GROUP BY
子句中刪除Merchandise.Price
和Merchandise.Quantity
。
同樣, DISTINCT
在GROUP BY
查詢中沒有用,因此您也可以將其刪除。
SELECT Sum([Price]*[Quantity]) AS Total_Value
FROM Merchandise INNER JOIN Book ON Merchandise.MerchID = Book.ISBN
GROUP BY Book.Genre
HAVING Book.Genre='Nonfiction' AND Merchandise.Price>18;
如果將HAVING
更改為WHERE
子句,則可以在執行GROUP BY
聚合之前排除不需要評估的行:
SELECT Sum([Price]*[Quantity]) AS Total_Value
FROM Merchandise INNER JOIN Book ON Merchandise.MerchID = Book.ISBN
WHERE Book.Genre='Nonfiction' AND Merchandise.Price>18
GROUP BY Book.Genre;
實際上,對於此特定查詢,我懷疑您根本不需要GROUP BY
:
SELECT Sum([Price]*[Quantity]) AS Total_Value
FROM Merchandise INNER JOIN Book ON Merchandise.MerchID = Book.ISBN
WHERE Book.Genre='Nonfiction' AND Merchandise.Price>18;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.