gpt4 book ai didi

php - SQL WeekOfYear() 在年底停止。备择方案?

转载 作者:行者123 更新时间:2023-11-29 09:24:22 25 4
gpt4 key购买 nike

我有一个根据用户选择的日期范围执行的查询。例如:2019年12月12日至2020年1月13日。

// Retrieve count of attendance, no shows and cancellations per user selected category and sort by week number
$q = "SELECT YEARWEEK(`start_time`, 0) AS weekno,
SUM(`is_no_show` = 0 AND `is_cancelled` = 0) as attended,
SUM(`is_no_show` = 1) AS no_shows,
SUM(`is_cancelled` = 1)AS cancelled
FROM `myTable`
WHERE (`start_time` > :start_date AND `start_time` < :end_date)
AND category LIKE :cohort_type
GROUP BY weekno";

我的问题是此查询在 2019 年 12 月 23 日之后停止提取数据。它似乎停在一年的最后一周,而不是进入 2020 年的第一周。我该如何解释这一点?非常感谢任何建议或提示!

谢谢。

一般数据库结构:

+------------+-----------+-----------+
| start_time | no_shows | cancelled |
+------------+-----------+-----------+
| 2019-12-20 | 1 | 0 |
| 2019-12-21 | 0 | 0 |
| 2019-12-22 | 0 | 1 |

目标:我想每周对数据进行求和

编辑:YEARWEEK() 跳过 2020 年的第一周,直接进入第 2 周。

最佳答案

您的查询缺少关于年份的 GROUP BY 条件;截至目前,它将混合属于不同年份的几周,我认为这不是您想要的。我建议使用 YEARWEEK(),它会考虑年份。

此外,您对日期的过滤似乎很尴尬,因为它混合了参数和字符串连接;您可以使用半开间隔(以及适当的参数绑定(bind))。

考虑:

SELECT 
YEARWEEK(`start_time`) AS weekno,
SUM(`is_no_show` = 0 AND `is_cancelled` = 0) attended,
SUM(`is_no_show` = 1) no_shows,
SUM(`is_cancelled` = 1) cancelled
FROM `attendee_categories_appts_joined`
WHERE
`start_time` > :start_date
AND `start_time` < :end_date
AND category LIKE :cohort_type
GROUP BY weekno

关于php - SQL WeekOfYear() 在年底停止。备择方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59861824/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com