1

tableA から上位 5 つの値を照会する必要があります。以下のような

    select id, count(occurrence), date 
    from 
    (select id, unnest(value) as occurrence, date from tableA) as a
    group by id, occurrence, date 
    order by occurrence desc 
    limit 5

 id  | occurrence |   date   
-----+-------+----------
 330 |    11 | 20141015
 400 |    11 | 20141015
 390 |    10 | 20141015
 240 |    10 | 20141015
 501 |    10 | 20141015

ID を受け取った後、同じ tableA にクエリを実行して、20140101 から 20141015 までの他の日付範囲の ID のすべての値を取得します。

expected result:

 id  | occurrence |   date   
-----+-------+----------
 330 |    11 | 20141015
 400 |    11 | 20141015
 390 |    10 | 20141015
 240 |    10 | 20141015
 501 |    10 | 20141015
 330 |    0  | 20141014
 400 |    1  | 20141014
 390 |    10 | 20141014
 240 |    15 | 20141014
 501 |    10 | 20141014
 330 |    11 | 20141013
 400 |    11 | 20141013
 390 |    11 | 20141013
 240 |    19 | 20141013
 501 |    10 | 20141013

しかし、どうすれば正確にそれを行うことができますか?

私のpostgresqlバージョンは8.1であり、パーティションを使用できません(提案したい場合)


編集

select  id, count(value) as occurrence, date
from tableA
where id = ANY(
    select array(
        select id
        from (
            select date, unnest(id) as id
            from tableA where date>='20140101' and date<='20141015'
            )as a
        )
)
group by id, date

何も返しません。私の配列は正しいですか?

4

2 に答える 2

0

select sth from table where dt > 20140101 and dt < 20141015 and row_num <= 5 を試すと、正しい答えが得られます。

于 2015-10-13T14:51:48.567 に答える