簡體   English   中英

對表達式使用不同的子句

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

同樣, DISTINCTGROUP 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.

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