0

我需要一些帮助来根据给定的日期范围对一些 MySql 表记录进行计数和分组。表结构是这样的:

在此处输入图像描述

在此先感谢您的帮助

4

1 回答 1

2

这应该给你你需要的结果:

SELECT
  d1.dt,
  COUNT(DISTINCT t1.recid) AS departures,
  COUNT(DISTINCT t2.recid) AS returns,
  COUNT(DISTINCT t1.recid) + COUNT(DISTINCT t2.recid) AS total
FROM (SELECT departure_date AS dt FROM yourtable
      UNION SELECT return_date FROM yourtable) d1
  LEFT JOIN yourtable t1 ON d1.dt = t1.departure_date
  LEFT JOIN yourtable t2 ON d1.dt = t2.return_date
GROUP BY
  d1.dt

第一个子查询将返回您的表中存在的所有日期,而不是重复的(出发和返回)。

然后,我尝试使用 LEFT JOIN 将每个日期加入到出发日期。然后我计算使连接成功的 DISTINCT t1.recid..

然后,我尝试使用 LEFT JOIN 将每个日期加入到返回日期。总计是两个计数的总和。

小提琴在这里

于 2013-05-05T17:13:07.103 回答