gpt4 book ai didi

MySQL 按周分组 从每月 1 日开始

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

需要从当月 1 日开始按周分组

DDL:

CREATE TABLE `group_by_week` (
`id` int(4) NOT NULL AUTO_INCREMENT,
`date` date DEFAULT NULL,
`value` int(4) DEFAULT NULL,
PRIMARY KEY (`id`)
);

INSERT INTO `group_by_week`
(`date`,`value`)
VALUES
('2016-01-01',1),
('2016-01-02',2),
('2016-01-03',3),
('2016-01-04',4),
('2016-01-05',5),
('2016-01-06',6),
('2016-01-07',7),
('2016-01-08',8),
('2016-01-09',9),
('2016-01-10',10),
('2016-01-11',11),
('2016-01-12',12),
('2016-01-13',13),
('2016-01-14',14),
('2016-01-15',15),
('2016-01-16',16);

预期结果:

第 1 周 => 28

第 2 周 => 77

第 3 周 => 31

最佳答案

您可能需要通过潜水 Day 来获取周数用 7 部分,然后您可能需要使用 FLOOR 对结果进行四舍五入。

如果有不同月份的日期,那么最好添加 month name以及周数。所以我就这么做了。因此第一列值类似于monthname weeknumber。我们可以使用相同的第一列进行分组

查询

SELECT
CONCAT(MONTHNAME(`date`), ' week ', FLOOR(((DAY(`date`) - 1) / 7) + 1)) `month & week`,
SUM(`value`) AS `value`
FROM `group_by_week`
GROUP BY `month & week`
ORDER BY month(`date`), `month & week`;

结果

+-----------------+-------+
| month & week | value |
+-----------------+-------+
| January week 1 | 28 |
| January week 2 | 77 |
| January week 3 | 31 |
+-----------------+-------+

SQL Fiddle Demo

关于MySQL 按周分组 从每月 1 日开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40103725/

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