簡體   English   中英

從聯接表中按年份查詢數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM