группировка по соотношению и старшинству в SQL - PullRequest
2 голосов
/ 10 июля 2011

Я работаю над MYSQL и ищу решение для отображения группировки данных по соотношению.

У меня есть таблица COURSE, которая содержит идентификатор курса и соотношение курсов. У меня есть другая таблица, ASK, которая содержит идентификатор запрашивающих и другой идентификатор поля, указывающий на таблицу COURSE (идентификаторы соответствуют). С помощью одного SQL-запроса я хотел бы отобразить все запросы, группирующиеся по соотношению и отклоняющие другие требования. Требования учитываются по старшинству.

Например, у меня есть 3 курса: первый - только 2 человека, а 2 других - только один человек. В таблице ASK у нас есть 3 спрашивающих (ДЖЕК, ДЖО И ДЖОН), указывающих на первый курс, (ДЖОН И ДЖО) 2 на второй и третий (ДЖЕК И ДЖОН). Джек старше, после ДЖОНА и после ДЖО.

Хотелось бы увидеть:

course id   studentName 
-------------------------
1           JACK         
1           JOHN            
2           JOHN
3           JACK

1 Ответ

1 голос
/ 10 июля 2011
SELECT c.courseID
       s.studentName
FROM course AS c
    JOIN asks AS a
        ON a.courseID = c.courseID
    JOIN student AS s
        ON s.studentName = a.studentName
    JOIN asks AS a2
        ON a2.courseID = c.courseID
    JOIN student AS s2
        ON s2.studentName = a2.studentName
        AND s2.seniority <= s.seniority
GROUP BY c.courseID
       , c.ratio
       , s.studentName
HAVING c.ratio >= COUNT(*)
ORDER BY c.courseID
       , s.seniority
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...