2015-11-16 1 views
0

У меня есть таблица студентов, которые используют программы/PGM в колледже. Я хочу знать, в данном месяце, для топ 100 платиноидов:RANK(), DENSE_RANK() и COUNT() в SQL Server

  1. сколько раз программа/PGM была запущена (в течение месяца),
  2. рейтинг МПГ,
  3. как много всего ... уникального SIDs ... Student ID запускал PGM, и
  4. рейтинга подсчета уникальных студентов

Я был даным этим MS SQL код 2010 ниже ... найти вершину 100 PGM/программ. Я действительно очистил свой взлом вложенных SELECT, COUNT, COUNT DISTINCT, RANK и т. Д. ... Поверьте мне, я пытался, копируя SQL из других проблем и ответов. Я надеялся, что у меня не будет временного стола. Все, что я пытался не было «никакой радости» :( Так я думал, что я по электронной почте сообщества StackOverflow. Любая помощь будет высоко оценили и спасибо заранее.

SELECT TOP 100 
    T.PGM AS 'Program' 
    ,COUNT (*) AS 'Program Count' 

FROM StudentPrograms T 

WHERE 
    T.PGM <>'unknown' 
    AND T.CreateDate > '10/01/2015' 
    AND T.CreateDate < '10/31/2015' 

GROUP BY  
    T.PGM 

ORDER BY 
    COUNT(*) DESC 
    ; 

я должен закончить с 5 столбцов в таблице

  1. Программа
  2. Программа граф
  3. Программа Rank (будет 1 до 100 ... скучно, я знаю ... но это нормально сейчас)
  4. Student Count
  5. Student Rank (не будет прямой 1 до 100, но разбросанные вокруг немного)
+2

что 'MS SQL 2010'? –

+0

Вам нужно предоставить дополнительную информацию о таблицах и столбцах, которые у вас есть. – trincot

ответ

0

Если вы хотите, рейтинг, возможно, rank() будет делать хочу, чтобы вы хотите:

SELECT TOP 100 
     T.PGM AS Program, COUNT(*) AS ProgramCount, 
     RANK() OVER (PARTITION BY COUNT(*) DESC) as ranking 
FROM StudentPrograms T 
WHERE T.PGM <>'unknown' AND 
     T.CreateDate > '2015-10-01' AND 
     T.CreateDate < '2015-10-31' -- We don't like Halloween 
GROUP BY T.PGM 
ORDER BY COUNT(*) DESC; 
+0

FYI @GPS Ger, этот запрос исключает 31 октября (как и ваш оригинал), следовательно, комментарий Хэллоуина. Также я представил изменение, но, если вы хотите, чтобы число учеников было равно, просто скопируйте строки 'COUNT' и' RANK' и замените '*' на 'DISTINCT SID'. –

+0

Спасибо, я собираюсь попробовать это ... но серьезно ... сервер не работает. –

+0

Кроме того, спасибо за улов Хэллоуина. Отметим, что я большой фанат Streak Cheese Incident, и их Hulaween так же важен для меня. –