如何解决Have 语句在我的 sql 中不起作用
试着写一个这样的查询:
select distinct S.course_id,count(S.course_id)
from Section As S
Where Exists (Select S.course_id
From Section
Where S.year='2019'
Having count(S.course_id)>1 )
Group by S.course_id
Order by S.course_id DESC;
但结果会为我提供不会出现多次的 course_ids。
course_id | count(S.course_id) |
---|---|
PHY-101 | 1 |
EE-181 | 1 |
CMPE-347 | 1 |
CMPE-190 | 2 |
CMPE-101 | 1 |
BIO-101 | 1 |
解决方法
尝试按如下方式修改您的查询
select s.course_id,count(s.course_id)
from Section as s
Where Exists (Select * From Section s2
Where s2.year='2019' and s2.course_id=s.course_id
group by s2.course_id
Having count(*)>1)
Group by s.course_id
Order by s.course_id DESC;
,
子查询不是你想要的吗?
Select S.course_id,count(*)
From Section s
Where S.year = '2019'
Group by S.course_id
Having count(*) > 1;
如果您想要所有产品,请使用窗口函数:
select s.*
from (select s.*,count(*) over (partition by s.year) as cnt
from section s
where s.year = '2019'
) s
where cnt > 1;