当我们使用GROUP BY和HAVING与WHERE子句时,我只是混淆了SQL查询的执行顺序.先执行哪一个?什么是序列?
想象一下,我有一个包含{id,username,firstname,lastname}的客户的数据库表
如果我想找到有多少个不同名字的实例我可以做:
select firstname, count(*) from Customers group by 2 order by 1;
firstname | count(*)
====================
bob | 1
jeff | 2
adam | 5
Run Code Online (Sandbox Code Playgroud)
如何计算多次出现的名字数量?在伪sql中它将是这样的:
select
COUNT(
firstname,
count(*) as num_occurrences
)
from
Customers
group by 2
having num_occurrences > 1;
Run Code Online (Sandbox Code Playgroud) 我已经创建了以下查询来计算表中ID的重复次数.
select count(Hazaa) as Countie from Shazoo
group by Hazaa
Run Code Online (Sandbox Code Playgroud)
意识到它们中的大多数都等于1(就像它们应该的那样),我添加条件只显示有缺陷的条件.但是,SQL Server在语法上不同意我的看法.
select count(Hazaa) as Countie from Shazoo
where Countie > 1
group by Hazaa
Run Code Online (Sandbox Code Playgroud)
我如何区分我的结果与他们的数量?