#sql #sql-server #group-by #count #distinct
#sql #sql-сервер #группировка по #количество #различное
Вопрос:
Это простая таблица, и у меня проблема с количеством групп.
STUID DEPT
100 Math
100 History
200 Math
200 History
Это мой запрос
select count (distinct(STUID)), DEPT
from table
group by DEPT
и количество результатов 2 для математики, 2 для истории.
Мне нужно количество без дублирования для STUID, чтобы результат выглядел так
STUID DEPT
1 Math
1 History
Моя цель — подсчитать группу stuid (без дублирования) по подразделениям
Комментарии:
1. количество без дублирования равно 1 для всех отделов. Так что же там считать?
Ответ №1:
Мне нужно количество без дублирования для STUID
Ваш запрос уже делает это: он подсчитывает каждый stuid
только один раз, даже если он появляется несколько раз для данного отдела. Например, если бы у вас был следующий набор данных, вы все равно получили бы тот же результат (то есть количество в два для каждого отдела:
STUID DEPT
100 Math
100 History
200 Math
200 History
100 Math
100 History
200 Math
200 History
Если вам просто нужны разные dept
значения, используйте distinct
— мы могли бы добавить литерал 1
к каждой строке, но это было бы не очень полезно:
select distinct dept from mytable
Комментарии:
1. итак, основываясь на вашем примере, мне нравится видеть количество групп результатов запроса 2 для математики, 2 для истории. Моя цель — подсчитать группу stuid (без дублирования) по подразделениям
2. @user13570703: как я уже сказал, это то, что делает ваш исходный запрос:
select dept, count(distinct stuid) cnt from mytable group by dept
3. Извините, вы правы. Сегодня мой мозг отключился. Спасибо