SQL JOIN + COUNT QUERY - PullRequest
       6

SQL JOIN + COUNT QUERY

0 голосов
/ 02 октября 2009

Я пытаюсь отобразить таблицу со списком курсов. Я хотел бы включить столбец, который показывает количество людей, которые прошли курс и, если возможно, также число, которые еще не закончили его.

Моя структура таблицы выглядит так:

Courses
courseid | title | etc

Studying
courseid | studentid | some other fields | has_completed

В идеале вывод должен быть примерно таким, например:

Course Title | some other fields | Students completed | Students not completed
Something      etc                 5                    3

У меня трудности с подсчетом двух отдельных полей. Кто-нибудь может порекомендовать хороший способ сделать это?

Любой совет приветствуется, спасибо.

Ответы [ 3 ]

4 голосов
/ 02 октября 2009

Примерно так должно поступить:

SELECT c.CourseID, c.Title, SUM(s.Has_Completed) Completed, SUM(1-s.Has_Completed) NotCompleted
FROM Courses c
LEFT JOIN Studying s ON c.CourseID = s.CourseID
GROUP BY c.CourseID, c.Title
1 голос
/ 02 октября 2009

Если has_completed имеет значение 1 для true и 0 для false, вы можете решить это очень просто:

SELECT c.title, SUM(s.has_completed) as completed, COUNT(studentid) - SUM(s.has_completed) as notCompleted
FROM Courses c, Studying s
where c.courseid = s.courseid
GROUP BY c.courseid, c.title 
0 голосов
/ 02 октября 2009

Попробуйте использовать команду SQL count

SELECT COUNT(has_completed) FROM Studying WHERE has_completed='1'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...