SQL с количеством групп

#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. Извините, вы правы. Сегодня мой мозг отключился. Спасибо