【发布时间】:2023-03-15 07:06:01
【问题描述】:
我有一个数据集,其中不同学校在不同年份开设相同的课程。我需要得到每所学校每年开设的课程总数。我通过以下查询做到了这一点。
SELECT s.school_id
, s.name school_name
, year(c.start_date) as the_year
, COUNT(*) as total
FROM course c
LEFT
JOIN school s
ON c.school_id = s.school_id
group
by c.school_id
, the_year
ORDER
BY the_year;
这很好用,但是,我还需要获取每所学校从最早记录到最晚记录年份的课程总数。我最终要打印的表格看起来像这样
School | 2018 | 2019 | 2020 | Total
-----------------------------------
ACME | 0 | 2 | 0 | 2
Aca | 2 | 0 | 1 | 3
除了 Total 列之外,我可以使用之前的查询创建此表。
示例输出
school_id | school_name | the_year | total
------------------------------------------
3 | Aca | 2018 | 2
7 | ACME | 2019 | 2
7 | Aca | 2020 | 1
如何查询数据库以获取总数的数据集,以便将其附加到输出表中?谢谢。
【问题讨论】:
-
我可以用前面的查询制作这张表显示。
-
认真考虑处理应用代码中数据显示的问题,见:Why should I provide an MCRE for what seems to me to be a very simple SQL query?
-
您尚未解释如何生成预期的输出“除了总列”。
标签: mysql sql datetime count pivot