在表达式中使用 Distinct 从句
Using Distinct Clause with expressions
我正在尝试使用 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));
注意:我根据 MS Access 标签提交了这个答案。但是,我认为它应该在 SQL 服务器中工作相同,但不知道 MySQL.
GROUP BY Book.Genre, Merchandise.Price, Merchandise.Quantity
要求为这 3 个字段的每个唯一组合单独一行。由于您只需要一行,因此从 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;
我正在尝试使用 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));
注意:我根据 MS Access 标签提交了这个答案。但是,我认为它应该在 SQL 服务器中工作相同,但不知道 MySQL.
GROUP BY Book.Genre, Merchandise.Price, Merchandise.Quantity
要求为这 3 个字段的每个唯一组合单独一行。由于您只需要一行,因此从 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;