首页 > 解决方案 > MySql - 棘手的“分组依据”和计数

问题描述

我正在尝试计算赛季冠军和比赛的数量。一些背景: - 每个锦标赛可以有一场或多场比赛 - 我们的赛季是从 10 月 1 日到 9 月 30 日

冠军表:

ChampID (small int), Name, Startdate (date), +++

比赛表:

CompID(小整数),ChampID(小整数),+++

我知道我也使用左连接,即“左连接竞争 on Competition.champid = Championship.champid”。但我正在努力寻找:

这是我想出的最好的,但赛季冠军和比赛的数量

select DATE_FORMAT(startdate, "%Y") as ChampYear 
      , count(championship.champid)
      , count(competition.compid) 
   from championship
   left  
   join competition 
     on competition.champid = championship.champid
  GROUP 
     BY floor(period_diff( DATE_FORMAT(startdate, "%Y%m"), "201910") / 12);

你们中的任何一位专家可以告诉我前进的方向吗?

标签: mysql

解决方案


如果您只想计算本赛季的冠军/比赛(开始日期 = 10/2019),一个简单的WHERE就足够了。

SELECT DATE_FORMAT(startdate, "%Y") as ChampYear, count(championship.champid), count(competition.compid) 
FROM championship
LEFT JOIN competition on competition.champid = championship.champid
WHERE DATE_FORMAT(startdate, "%Y%m") = "201910"

推荐阅读