#mysql #sql
#mysql #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 |
БИО-101 | 1 |
Комментарии:
1. Вероятно, подзапрос должен быть коррелирован .
2. Кстати, вам редко когда нужно делать SELECT DISTINCT при выполнении GROUP BY.
Ответ №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;
Ответ №2:
Разве подзапрос не является в основном тем, что вы хотите?
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;