在下面的代码段中,您可以看到我想要用来选择所选城市的选择查询,总点数大于7(含)。它看起来不错,但有一个bug。当我运行此查询时,只有来自offenses
的元组d.point_count >= 7
中包含sum(d.point_count)
。我做错了什么?我希望得到d.point_count
中包含所有sum
的结果。不应该是HAVING
子句过滤GROUP BY
"结果"?
SELECT d.name,
d.surname,
d.city,
d.ID,
SUM(o.point_count) AS point_count,
COUNT(e.ID) AS offense_count
FROM events e
INNER JOIN drivers d ON (e.ID_driver = d.ID)
INNER JOIN offenses o ON (e.ID_offense = o.ID)
WHERE (d.city = 'Ostrava')
GROUP BY d.ID,d.name,d.surname,d.city
HAVING (SUM(o.point_count) >= 7)
我的主要问题是什么:结果中没有包含所有攻击,但只有那些,point_count大于7.我想包含所有攻击但过滤掉那些'驱动程序& #39;他们所有罪行的分数都不到7分。
查询结果没有having子句或where子句(名称,姓氏,id,点数,进攻次数):
name surname city x y z
R4UB8K U00XM2G5F Olomouc 1 9 1
IVJZ4T9B 4BDKK4Q Brno 2 14 2
U94Z8 19IBVY5J1 Praha 3 10 3
4WPG8 BL4FDM Olomouc 4 6 1
AZ956DS 4H45D Olomouc 5 6 1
HHXW1WY8Q 7S1WX1HL Praha 6 9 3
YJZ8AFJTH 4JI3QPV Brno 7 16 3
UCEA5JV3O 66NM24PF Vyskov 8 16 4
F0OPYR A2IGH Olomouc 9 24 4
2PPLZ7F 146XPQ6S Brno 10 25 4
F0ZPB C8A96T0H Ostrava 12 33 9
5GAXGL1 FBUE7L Ostrava 16 13 2
DDV174A0 DG7AP Ostrava 17 1 1
3R3GO4 4MXRA4C Brno 18 23 5
UKTS4C9H 91FY4O Praha 19 22 3
然后运行我得到的更高的查询:
5GAXGL1 FBUE7L Ostrava 16 13 2
但这个元组丢失了,为什么?
F0ZPB C8A96T0H Ostrava 12 33 9