によって私は私がして、グループに希望の列を持つテーブルが、例えば、それの最後のシリーズ(表はで動作するようにタイムスタンプ列を持つ)テーブルを持っているSQLグループはタイミング
Type | Time
=============
A | 1:00
A | 1:05
B | 1:10
C | 1:15
A | 1:20
A | 1:25
A | 1:30
私はこれらをグループ化してグループ化したいと思っています(Sum()、Max()、Avg())。変更が発生したときに知る方法はありません
Type | count_in_series | MinTime
================================
A | 2 | 1:00
B | 1 | 1:10
C | 1 | 1:15
A | 3 | 1:20
、与えられたデータは、ポイントを説明するためのサンプルだけである:
私のような何かをしたいと思います。
これは可能ですか?
ソリューション
私は以下の回答からのコンセプトでこれを使用していました。私が使用しているプログラムが、変数やCTEに対応していないことが分かります。ここに私の解決策は、サブクエリを使用している。このような
SELECT
Type
, max(t_stamp) as maxTime
, min(t_stamp) as minTime
FROM
(SELECT
*
, ROW_NUMBER() OVER (ORDER BY t_stamp desc) - ROW_NUMBER() OVER (PARTITION BY Type ORDER BY t_stamp desc) as grouping
FROM MyTable) as t1
GROUP BY t1.grouping, t1.Type
ORDER BY min(t_stamp) desc
? SQLサーバー?オラクル? – GurV
ウィンドウ関数Lead()は、エンジンがサポートしている場合に役立ちます。そうでない場合は、ユーザー変数を使用して行番号を割り当て、row_number + 1 = rowNumberに結合し、T1.TypeをT2.Typeと比較すると、異なるリセットカウント時に同じadd countを比較できます。 – xQbert
@GurwinderSingh SQLは点火クライアントを介して表現します – Evan