У меня есть таблица MEMBERS
со следующими соответствующими столбцами:
Name
JoinDate
Level --1=Gold,2=Silver,3=Bronze**
Я хочу создать один запрос для возврата сводной информации о членстве, в которой указано общее число присоединившихся по годам и уровню членства По сути, столбцы в моем наборе результатов будут выглядеть примерно так:
| YEAR | GOLD | SILVER | BRONZE | TOTAL |
Я мог бы получать разные значения в год для участников уровня Gold, Silver и Bronze соответственно, используя следующие 3 запроса:
SELECT YEAR(JoinDate) AS YEAR, COUNT(*) AS GOLD FROM Members
WHERE Level=1 GROUP BY YEAR(JoinDate) ORDER BY YEAR(JoinDate)
SELECT YEAR(JoinDate) AS YEAR, COUNT(*) AS SILVER FROM Members
WHERE Level=2 GROUP BY YEAR(JoinDate) ORDER BY YEAR(JoinDate)
SELECT YEAR(JoinDate) AS YEAR, COUNT(*) AS BRONZE FROM Members
WHERE Level=3 GROUP BY YEAR(JoinDate) ORDER BY YEAR(JoinDate)
Я также мог бы получить итоги, используя аналогичный запрос:
SELECT YEAR(JoinDate) AS YEAR, COUNT(*) AS TOTAL FROM Members
GROUP BY YEAR(JoinDate) ORDER BY YEAR(JoinDate)
Моя проблема в том, что я не нашел способа упростить все это в одном запросе. Как это сделать?