2016-10-18 12 views
0

私はトップNシリーズを与えるSQLクエリを構築しようとしています。単純化するために、上位Nは最初の日に最大のカウント()を意味する(または、シリーズ全体でカウント()がさらに良くなると言うことができます)。SQLトップ時系列データのNシリーズ

例: 私は集計しようとしているX列は2つしかありません。「色」と「日付」です。 「色」の列には100個のバリエーションがありますが、上位10個のみが必要です。10個の「色」のそれぞれについて、すべての日付の数(*)をカウントしたいです。

ランキングが表示されません

私が「+ order by + limit」を置くと、トップセグメントは選択されますが、トップシリーズは選択されません。

ありがとう

PS;私は唯一の「トップ2シリーズ」を選択した場合、私は唯一の青が3日目の最大の場合でも、この場合、

color | date 
red | 2016-01-01 
red | 2016-01-01 
red | 2016-01-01 
red | 2016-01-01 
black | 2016-01-01 
black | 2016-01-01 
black | 2016-01-01 
red | 2016-01-02 
red | 2016-01-02 
black | 2016-01-02 
black | 2016-01-02 
black | 2016-01-02 
blue | 2016-01-03 
blue | 2016-01-03 
blue | 2016-01-03 
blue | 2016-01-03 
black | 2016-01-03 
red | 2016-01-03 

:それはハイブ/インパラ

EX入力を使用して私が何かを変更した場合彼らは最大の "全体的"であるため、黒と赤を選択したい。ブルーは完全にこれは、CTEとwindow function usin達成することができ

color | date  | count 
red | 2016-01-01 | 4 
black | 2016-01-01 | 3 
red | 2016-01-02 | 2 
black | 2016-01-02 | 3 
red | 2016-01-03 | 1 
black | 2016-01-03 | 1 
+0

は、いくつかのサンプルデータを共有して出力することができます。 –

+0

投稿を編集しました – user1418079

+0

まだ問題がありますか? –

答えて

1

結果

所望の出力のうち、フィルタリングされなければなりません。

with temp as (
SELECT color ,date, COUNT(1) OVER (PARTITION BY color ,date) as cont 
from table) 
select * from temp order by cont 

注:表名で更新テーブル。

関連する問題