MySQL SUM 并按日期范围排序

问题描述 投票:0回答:1

我有一张表,其中包含一堆日期和每个日期的小时数(有点像时间表)。 我可以按项目名称排序,但我希望能够按特定周排序。 例如,如果您单击 5 月 6 日标题,您将获得项目 5,然后是项目 3,然后是其他没有时间的项目。

enter image description here

我能做到:

SELECT DISTINCT jobno, COALESCE(SUM(hours), 0) AS weekHours
FROM gusTime
WHERE gusTime.date>='2024-04-29'
GROUP by jobno
ORDER BY weekHours DESC;

但是 weekHours 是所有周的总和。

所以,我尝试了这个:

SELECT DISTINCT jobno, COALESCE(SUM(hours), 0) AS weekHours
FROM gusTime
WHERE gusTime.date>='2024-04-29'
AND (gusTime.date BETWEEN '2024-05-06' AND '2024-05-10')
GROUP by jobno
ORDER BY weekHours DESC;

但是这只返回项目 3 和 5,没有时间的项目不再显示。 我如何计算特定周的 weekHours SUM 并按其排序,并且没有时间保留项目?

mysql
1个回答
0
投票

您需要 DATE“2024-05-06”的时间。您可以通过条件聚合来获取它们

SELECT
  jobno,
  COALESCE(SUM(CASE WHEN gusTime.date = DATE '2024-05-06' THEN hours END), 0) AS weekHours
FROM gusTime
WHERE gusTime.date >= DATE '2024-04-29'
GROUP by jobno
ORDER BY weekHours DESC;
© www.soinside.com 2019 - 2024. All rights reserved.