日付(タイムスタンプ)といくつかの属性を持つレコードがたくさんあるVerticaデータベースがあります。例として、「testTable」は次のようになります。
a varchar(255)
b int
timestamp bigint
sum(b)
ユーザーが指定できる期間(たとえば、1月1日から1月15日)の毎日のトップ10を見つける必要があります。
反復クエリはどのようになりますか?粗雑な方法は、間にある個々のSELECT
ステートメントである可能性がありますUNION ALL
。
select a, sum(b) from testTable where TO_TIMESTAMP( timestamp ) between '2012-01-01 05:10:00' and '2012-01-02 05:10:00' group by a order by sum(b) desc LIMIT 10
UNION ALL
select a, sum(b) from testTable where TO_TIMESTAMP( timestamp ) between '2012-01-02 05:10:00' and '2012-01-03 05:10:00' group by a order by sum(b) desc LIMIT 10
UNION ALL
select a, sum(b) from testTable where TO_TIMESTAMP( timestamp ) between '2012-01-03 05:10:00' and '2012-01-04 05:10:00' group by a order by sum(b) desc LIMIT 10
..
..
..
UNION ALL
select a, sum(b) from testTable where TO_TIMESTAMP( timestamp ) between '2012-01-14 05:10:00' and '2012-01-15 05:10:00' group by a order by sum(b) desc LIMIT 10 ;
しかし、ユーザーが2つの指定された日付でスクリプトを実行できる、より一般的なものにしたいと思います。