2016-08-02 8 views
0

によって合計私はテーブルを持っている:(X5で編集) のmySQL:別のグループ・バイ

_date(2014-03-05;2014-04-05) 
_period(1,2,3,4,5,1,2,3,4,5,1,2; 1,2,3,4,5,1,2,3,4,5) 
_id(x1,x1,x1,x1,x1,x2,x2,x2,x2,x2,x3,x3;x4,x4,x4,x4,x4,x5,x5,x5,x5,x5) 
_reading(1,1,1,1,1,2,2,2,2,2,5,6;1,1,1,1,1,2,1,1,1,1) 
_reading2 (5,5,5,5,5,4,4,4,4,4,7,7;1,1,1,1,1,1,1,1,1,1) 

image of the table 1

持っていないすべてのデータを排除し、それ以下のように私は結果を必要とします_id 5への完全な期間1は、その日のために各個別_idため_reading2の日及び合計ため_readingの和を計算:

_date(2014-03-05;2014-04-05) 
sum_reading(15;11) 
sum_reading2 (9;2) 
image of the table2

テスト済み

+0

私はテーブルフォーマットをよく理解していません。私はまた、sum_reading2で9がどこから来るのか分かりません。私は、sum_Readingの15は、1と2の和であり、5,6ではないと思う。なぜなら、5,6は、部分的なので、望ましくない期間に1,2に等しいからである。しかし、これは標準的なデータレイアウトではありません。私は以前見たことがあります。実際のデータと予想される結果を表す列ヘッダーと行を含む表形式でデータを配置できますか? – xQbert

+0

@xQbert、テーブルの画像を追加しました。これが役立つことを願っています。 9は、_reading2が_idの同じ値を1日持つので、_reading2から5 + 4を追加することから来ます。それは各_periodごとに繰り返されます。計算には1つしか必要ありません。 – Lina

+0

しかし、1を読むことはすべての値に対して1ですが、それでもそれらを合計しますか?もし私のポイントが実際には読書1を合計しているのですが、読書2でDISTINCTの値を合計していますので、おそらくちょうど合計(Distinct reading2)ですか? – xQbert

答えて

0

SQL Fiddle

私は完全な5つの周期を持っていない_idsを排除するために、サブクエリを使用しています。 それから、日付と_IDでグループを使用して、合計と合計を区別し、総和と合計の個別値を取得します。

SELECT A._date, sum(_Reading) as _Reading, 
       sum(Distinct _Reading2) as _Reading2 
FROM table A 
INNER JOIN (SELECT _ID, _date 
      FROM table 
      GROUP BY _ID, _date 
      HAVING count(_Period) = 5) B 
on A._ID = B._ID 
and A._Date = B._Date 
GROUP BY A._Date 

これは、読書の順序と実際の読解の順序が実際に読むことが重要なので、依然としてニーズを満たしていない可能性があります。独特のサマリだけではありません。しかし、私が要件について不明なので、これは望ましい結果に合っています...今のところ私ができることは最高です。

X5用の更新 - 内側のレベルで明確に合計を取得することで、問題を解決できると思われる読みを合計することができます。

SELECT A._date, sum(_Reading) as _Reading, 
       sum(B.I_reading2) as _Reading2 
FROM table A 
INNER JOIN (SELECT _ID, _date, Sum(Distinct _Reading2) as I_Reading2 
      FROM table 
      GROUP BY _ID, _date 
      HAVING count(_Period) = 5) B 
on A._ID = B._ID 
and A._Date = B._Date 
GROUP BY A._Date 
+0

ありがとうございました。しかし、x5を_idとして追加し、結果に_reading2を1つ含めると_reading2の合計が1になりますが、2を取得する必要があります。それは別個のものだと思っています。ソート? http://sqlfiddle.com/#!9/1b5f6/1 – Lina

+0

リンクしたフィドルとリンクを調整して問題を表示できますか?自分の現在の日付やx5どのような値で追加されています。 – xQbert

+0

私はfoo値( '2014-03-06'、1、 'x5'、1,1)に挿入しました。 foo値に挿入する( '2014-03-06'、2、 'x5'、1,1); foo値に挿入する( '2014-03-06'、3、 'x5'、2,1); foo値に挿入する( '2014-03-06'、4、 'x5'、2,1); foo値に挿入する( '2014-03-06'、5、 'x5'、1,1); sqlfiddle.com/#!9/1b5f6/1/0 – Lina

関連する問題