group by with having 在 select 指令上需要聚合函数吗?

Does group by with having require aggregate function on the select instruction?

假设我有一个 table

InspectLog​(​userid, attr1, attr2)

我想知道检查超过5次的用户的userid

以下是我目前的了解:

SELECT I.userid
 FROM InspectLog I
 GROUP BY I.userid
 HAVING Count(*) >5;

我的问题是,正如我看到的很多示例,当使用 having 时,它们也像这样在 select 指令中调用 Count()

SELECT I.userid, Count(*) AS c
 FROM InspectLog I
 GROUP BY I.userid
 HAVING Count(*)>5;

having是否需要在select指令的开头使用聚合函数?输出是否相同。从我得到的结果来看,在这种情况下,有一个额外的 c 列会有所不同。但是如果没有第一个,HAVING 上的 Count() 会正常工作吗?

简答:不,您不需要在 Select 子句中添加 "Count()"。

它只会在结果中添加一个额外的列。