首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按月份或周对mysql查询进行分组,并以适当的开头/结尾

问按月份或周对mysql查询进行分组,并以适当的开头/结尾
EN

Stack Overflow用户
提问于 2016-08-07 17:05:45
回答 1查看 45关注 0票数 0

我在SO上搜索和查看了很多答案,但即使尝试应用我发现的所有答案,我也得到了不正确的结果。

我尝试将mysql结果按周、按月、从第1天到每月最后一天进行分组

我尝试过不同类型的分组,例如:

代码语言:javascript
复制
GROUP BY YEARWEEK(data)
GROUP BY WEEK(data)

几个星期后

代码语言:javascript
复制
GROUP BY MONTH(data)

几个月来

所有这些分组方法都返回不正确的分组。一些结果开始于一个月或一周的任意几天。

这是一个示例查询,它从上个月的条目中获得除以周的结果,尽管周分组并不是从mon-sun开始的周。

代码语言:javascript
复制
SELECT *, count(id) AS count FROM leadz WHERE YEAR(data) = YEAR(CURRENT_DATE - INTERVAL 1 MONTH) AND MONTH(data) = MONTH(CURRENT_DATE - INTERVAL 1 MONTH) GROUP BY YEARWEEK(data)

以下是我得到的每周结果:

代码语言:javascript
复制
 2016-07-01   2016-07-04   2016-07-16    2016-07-17   2016-07-25   2016-07-31

接下来是按月分组的总条目的示例查询,同样,摸索不是从该月的1号开始的

代码语言:javascript
复制
SELECT *, count(id) AS count FROM leadz GROUP BY MONTH(data)

以下是我得到的月份片段:

代码语言:javascript
复制
2016-04-18    2016-05-25    2016-06-01    2016-07-25   2016-08-02

感谢您的任何帮助

EN

回答 1

Stack Overflow用户

发布于 2016-08-07 17:12:55

对于星期一的开始,您应该使用

代码语言:javascript
复制
YEARWEEK(data, 1)

或

代码语言:javascript
复制
WEEK(data,1)

请参阅ref http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_week

所以你的选择应该是

代码语言:javascript
复制
SELECT *, count(id) AS count 
FROM leadz 
WHERE YEAR(data) = YEAR(CURRENT_DATE - INTERVAL 1 MONTH) 
AND MONTH(data) = MONTH(CURRENT_DATE - INTERVAL 1 MONTH) 
GROUP BY YEARWEEK(data, 1)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38812582

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档