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()"。
它只会在结果中添加一个额外的列。
假设我有一个 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()"。
它只会在结果中添加一个额外的列。