不知道这个方法可能被称为什么
我有一张桌子
瞳孔 | 付款 | 价格 |
---|---|---|
瞳孔A | 100 | 100 |
学生B | 100 | 50 |
学生B | 100 | 0 |
瞳孔C | 100 | 20 |
我正在运行如下查询
SELECT Pupil, SUM(Payments), (SUM(Price) - SUM(Payments)) AS Balance , SUM(Price)
FROM LessonSchedule
Group by Pupil Order By Balance Desc
这使
瞳孔 | 付款 | 价格 | 平衡 |
---|---|---|---|
学生B | 200 | 50 | 150 |
瞳孔C | 20 | 100 | 80 |
瞳孔A | 100 | 100 | 0 |
我对这个查询的问题是它给了所有学生,即使没有突出的平衡。
我正在寻找一种方法来仅显示具有出色平衡的学生
期望的结果看起来像
瞳孔 | 付款 | 价格 | 平衡 |
---|---|---|---|
学生B | 200 | 50 | 150 |
瞳孔C | 20 | 100 | 80 |
就像是
SELECT Pupil, SUM(Payments), (SUM(Price) - SUM(Payments)) AS Balance , SUM(Price)
FROM LessonSchedule
WHERE Balance !== 0
Group by Pupil
Order By Balance Desc
我已经尝试过WHERE Balance !== 0
,但由于Balance
列中不存在该列,因此查询不起作用。
我也尝试过 WHERE (SUM(Price) - SUM(Payments)) !==0
,但这给出了相同的结果。
有没有推荐的方法来达到预期的结果?
我也试过!=
代替!==
WHERE
在收集数据之后工作,但在做GROUP BY
.HAVING
之后工作GROUP BY
。由于
SUMs
(和其他聚合)是由“分组依据”完成的,您必须等到稍后再检查Balance
。注意: 在您的示例中
Balance
是简写,因此包括聚合。(SUM(Price) - SUM(Payments))
Balance