簡體   English   中英

返回按周分組的行數 MySQL

[英]Return the count of rows grouped by week MySQL

我試圖從數據按周分組的 MySQL 表中獲取行數。

到目前為止,我的查詢是:

 "SELECT count(*) as tweets, twitTimeExtracted as date 
  FROM scene.twitData 
  group by week(twitTimeExtracted)"

此查詢返回以下數據:

在此處輸入圖片說明

如您所見,周數不正確,我期待從 1 月 7 日星期一(7、14、21、28、4、11 等)開始到本周的每周數據。

我還嘗試了原始查詢的修改版本:

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 不是很有經驗。

任何幫助將不勝感激。

謝謝

這會將datetime值轉換為一周中適當的星期一

select count(*) as tweets,
       str_to_date(concat(yearweek(twitTimeExtracted), ' monday'), '%X%V %W') as `date`
from twitData 
group by yearweek(twitTimeExtracted)

yearweek返回周和年。 str_to_date與字符串monday str_to_date為您提供星期一的datetime值。

如果您的一周從Monday開始,請改用yearweek(twitTimeExtracted, 1)

始終獲取一周中的星期一的一種選擇是使用 adddate:

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 小提琴演示

試試這個:

 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

替代解決方案:

SELECT DATE(DATE_SUB(yourDate, INTERVAL WEEKDAY(yourDate) DAY));

例如:

SELECT DATE(DATE_SUB(DATE("2016-04-11"), INTERVAL WEEKDAY(DATE("2016-04-11")) DAY));

你也可以試試這個。

select 
DATE_ADD(DATE(date), INTERVAL (7 - DAYOFWEEK(date)) DAY) as weekend,
count(tweets)
from scene.twitData 
  group by weekend;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM