这是我的桌子:
我有一个问题,我不明白以下两个查询之间的区别:
查询#1:
SELECT
productID,
SUM(soldQty)
FROM
Sales
WHERE
soldQty <> 0
GROUP BY
ProductID
查询#2:
SELECT
productID,
SUM(soldQty)
FROM
Sales
GROUP BY
ProductID
HAVING
SUM(soldQty) <> 0
哪些
productID
会导致查询?不是一样吗
查询不相同。第一个查询将查找
SUM
值不等于 soldQty
的行。但是,second 查询将返回
0
中值的
total
SUM
的行。因此,如果值的 soldQty
达到 0
,例如 SUM
、0
和 10
,这些行将被省略。第一次查询的情况并非如此。-4
请注意,第一个数据集中返回了
-6
,
SELECT MyColumn,
SUM(IntColumn) AS TotalIntColumn
FROM (VALUES(1,0),
(1,2),
(1,5),
(1,0),
(1,-2),
(2,10),
(2,-4),
(2,-6),
(2,0))V(MyColumn,IntColumn)
WHERE IntColumn <> 0
GROUP BY MyColumn;
SELECT MyColumn,
SUM(IntColumn) AS TotalIntColumn
FROM (VALUES(1,0),
(1,2),
(1,5),
(1,0),
(1,-2),
(2,10),
(2,-4),
(2,-6),
(2,0))V(MyColumn,IntColumn)
GROUP BY MyColumn
HAVING SUM(IntColumn) <> 0;
的值为 2
,但在第二个数据集中未返回。查询 2 将忽略与累计销售金额 <> 0 的所有产品相关的所有记录