2017-01-25 14 views
1

に合計する現在、私のdbテーブルは毎日のdailTotal値を持っていますので、これらを週ごとの合計にグループ化する必要があります。Mysql指定された日付範囲の毎週の合計を

毎日の合計を週合計に追加し、指定した期間の週ごとの合計を表示することは可能ですか?

ここからどこで始めるのかはわかりません。取得する現在のクエリは次のとおりです。

SELECT dailyTotal 
FROM energyUsage 
WHERE meterIdentifier = '1300011505120' 
     AND startTime >= '2017-01-01 00:00:00' 
     AND startTime <= '2017-12-31 00:00:00'; 

答えて

1

週は少し曖昧になります。便利な定義の1つは組み込みの定義です。だから、あなたがyearweek()を使ってやりたいことができます。

SELECT YEAREWEEK(startTime) as yyyyww, SUM(dailyTotal) 
FROM energyUsage 
WHERE meterIdentifier = '1300011505120' AND 
     startTime >= '2017-01-01' AND 
     startTime <= '2017-12-31' 
GROUP BY yyyyww 
ORDER BY yyyyww; 

をあなたは週が日曜日か月曜日に始まり、年の最初の週があるときかどうかを制御するmode引数をチェックアウトすることができます。 「1月の第1週は1月1日に始まります」というモードはありませんが、その目的のために論理を入れることはできます。

注:startTimeは時間コンポーネントを持っている場合、私はあなたが欲しい推測しています:

WHERE meterIdentifier = '1300011505120' AND 
     startTime >= '2017-01-01' AND 
     startTime < '2018-01-01' -- note the inequality 
+0

である集約関数をサポートしていますか?それが私が欲しいものです。 – user794846

+0

@ user794846。 。 。 'mode'引数について読んでください。 。 。 https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_week。 –

0

これはそれを行う必要があります。

SELECT SUM(dailyTotal) AS weeklyTotal 
FROM energyUsage 
WHERE meterIdentifier = '1300011505120' 
     AND startTime >= '2017-01-01 00:00:00' 
     AND startTime <= '2017-12-31 00:00:00' 
GROUP BY YEAR(startTime),WEEK(startTime); 
+0

これはうまくいかないようです: 'fieldlist'の 'weeklyTotal'カラムが不明です – user794846

+0

tsql構文に慣れてしまいました。今すぐ動作するはずです –

0

をあなたは、集計関数を使用できます。

SELECT dailyTotal, 
     sum(dailyTotal) over (partition by EXTRACT(MONTH FROM StartTime)) as MonTotal 
FROM energyUsage 
WHERE meterIdentifier = '1300011505120' 
     AND startTime >= '2017-01-01 00:00:00' 
     AND startTime <= '2017-12-31 00:00:00'; 

私はここにたくさんのことを想定していますが、あなたはそのアイディアを得ています。

の1-のMySQLのバージョンでは、それはあなたのクエリで使用しているものを1月1日に開始する年のルールがない場合は

2 - あなたのフィールドが日付タイプ

+0

SQL構文にエラーがあります。あなたのMySQLサーバーのバージョンに対応するマニュアルをチェックしてください。 '(パーティションをEXTRACT(MONTH FROM StartTime)で区切って)MonTotalとして使用してください。 FROM energyUsage WHER' on line 2 – user794846

+0

どのバージョンのオーバーパーティションが許可されていますか? – McNets

+0

$ mysql --version mysql Ver 15.1 Distrib 5.5.50-MariaDB、Linux(x86_64)for readline 5.1 –

関連する問題