首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >返回按周分组的行数MySQL

返回按周分组的行数MySQL
EN

Stack Overflow用户
提问于 2013-03-22 22:04:01
回答 5查看 12K关注 0票数 8

我正在尝试从MySQL表中获取行数,该表中的数据是按周分组的。

到目前为止,我得到的查询是:

代码语言:javascript
复制
 "SELECT count(*) as tweets, twitTimeExtracted as date 
  FROM scene.twitData 
  group by week(twitTimeExtracted)"

此查询返回以下数据:

如你所见,周数不正确,我期望从1月7日星期一开始的每周的数据(7,14,21,28,4,11等)一直持续到这周。

我还尝试了原始查询的修改版本:

代码语言:javascript
复制
SELECT count(*) as tweets, twitTimeExtracted as date 
FROM scene.twitData 
WHERE date(twitTimeExtracted) 
   BETWEEN '2013-01-07' and '2013-03-11' 
group by week(twitTimeExtracted)

这将返回与第一个查询类似的结果。

可能与存储在DATETIME: twitTimeExtracted列中的几行数据不一致?我真的不知道我对MySQL不是很有经验。

任何帮助都将不胜感激。

谢谢

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-03-22 22:45:25

这会将datetime值转换为一周中相应的星期一

代码语言:javascript
复制
select count(*) as tweets,
       str_to_date(concat(yearweek(twitTimeExtracted), ' monday'), '%X%V %W') as `date`
from twitData 
group by yearweek(twitTimeExtracted)

yearweek同时返回week和year。str_to_date和字符串monday一起提供星期一的datetime值。

如果你的一周是从Monday开始的,那就改用yearweek(twitTimeExtracted, 1)

票数 19
EN

Stack Overflow用户

发布于 2013-03-22 22:10:57

可以使用adddate来获取一周中的星期一:

代码语言:javascript
复制
SELECT count(*) as tweets, adddate(twitTimeExtracted, INTERVAL 2-DAYOFWEEK(twitTimeExtracted) DAY)
FROM twitData 
WHERE date(twitTimeExtracted) 
   BETWEEN '2013-01-07' and '2013-03-11' 
GROUP BY adddate(twitTimeExtracted, INTERVAL 2-DAYOFWEEK(twitTimeExtracted) DAY)

SQL Fiddle Demo

票数 0
EN

Stack Overflow用户

发布于 2013-03-22 22:17:27

试试这个:

代码语言:javascript
复制
 SELECT count(*) as tweets, 
     date_add('7 Jan 2012', day, datediff('7 Jan 2012', twitTimeExtracted)) % 7   
 FROM scene.twitData 
 group by date_add('7 Jan 2012', day, datediff('7 Jan 2012', twitTimeExtracted)) % 7
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15572283

复制
相关文章

相似问题

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