[英]Query data by year from joined table
我有一個名為colors
表,我需要創建一個查詢,該查詢根據其他表( programs
的日期返回每年使用多少種獨特的顏色。 看起來像這樣:
colors
+----+----------+
| id | name |
+----+----------+
| 1 | blue |
| 2 | yellow |
+----+----------+
programs
+----+------------+
| id | date |
+----+------------+
| 1 | 2016-01-08 |
| 2 | 2016-02-08 |
| 3 | 2017-02-08 |
+----+------------+
programs_colors
+------------+----------+
| program_id | color_id |
+------------+----------+
| 1 | 1 |
| 1 | 1 |
| 2 | 2 |
| 2 | 1 |
| 3 | 1 |
| 3 | 1 |
+------------+----------+
我已經嘗試過:
SELECT min(date), count(*) FROM (
SELECT min(date) AS date FROM programs_colors INNER JOIN programs ON programs.id = program_id GROUP BY color_id
) AS a GROUP BY year(date)
min(date): count(*):
2016-01-08 2
2017-01-08 0
但是上面的查詢將我的顏色總體上分組,但是我需要將它們按每年分組
預期結果:
min(date): count(*):
2016-01-08 2
2017-01-08 1
我希望我的問題有道理
如果我理解正確,那么您可能需要執行以下操作
SELECT min(date), sum(count) FROM (
SELECT min(date) AS date, count(*) as count FROM programs_colors INNER JOIN programs ON programs.id = program_id GROUP BY color_id
) AS a GROUP BY year(date)
SELECT min(date), count(distinct color_id)
FROM programs_colors
INNER JOIN programs
ON programs.id = program_id
GROUP BY year(date);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.