选择查询选择单个列值而不是SUM(HAVING / GROUP BY)

时间:2015-11-10 19:08:25

标签: sql derby

在下面的代码段中,您可以看到我想要用来选择所选城市的选择查询,总点数大于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

0 个答案:

没有答案