8

データが WEEK でグループ化されている 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の経験があまりないので、よくわかりません。

どんな助けでも本当に感謝します。

ありがとう

4

5 に答える 5

19

datetimeこれにより、値が適切な月曜日に変換されます

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

yearweek週と年の両方を返します。文字列 とともにmondaystr_to_date月曜日のdatetime値を示します。

週が月曜日から始まる場合は、代わりに を使用yearweek(twitTimeExtracted, 1)します。

于 2013-03-22T14:45:25.333 に答える
0

これを試して:

 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
于 2013-03-22T14:17:26.727 に答える
0

常に月曜日を取得するオプションの 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 フィドルのデモ

于 2013-03-22T14:10:57.413 に答える
0

これを試すこともできます。

select 
DATE_ADD(DATE(date), INTERVAL (7 - DAYOFWEEK(date)) DAY) as weekend,
count(tweets)
from scene.twitData 
  group by weekend;
于 2020-06-19T03:38:31.103 に答える