我正在尝试使用distinct子句将这两个值一起添加,但是当我这样做时,它仍然给了我两个单独的行。最后,我想将这两行添加到一起。
A screenshot of the table view from my query
基本上这是一个跟踪书籍,页面,数量,价格等的数据库。我试图找到适合某种类型(非小说类)的书籍的总价值,并且超过一定的价格阈。然后我将这两个相乘以得到值。
我的数据库中有两条符合此描述的记录,它显示了这两条记录的各个值
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));
答案 0 :(得分:1)
注意:我根据MS Access标记提交了此答案。但是,我认为它在SQL Server中的工作方式应该相同,但不了解MySQL。
GROUP BY Book.Genre, Merchandise.Price, Merchandise.Quantity
要求为这3个字段的每个唯一组合分别设置一行。由于您只想要一行,请从Merchandise.Price
子句中删除Merchandise.Quantity
和GROUP BY
。
同样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;