回答編集履歴
4
追記
answer
CHANGED
@@ -22,4 +22,24 @@
|
|
22
22
|
,('iii','2018/5/22')
|
23
23
|
,('jjj','2018/5/22')
|
24
24
|
;
|
25
|
+
```
|
26
|
+
> 日付ごとに10,000行あり、そのデータの最初の100件
|
27
|
+
|
28
|
+
というと、上記だと時間的に厳しいかもしれませんね。
|
29
|
+
以下は無名ブロックのpgsqlです。
|
30
|
+
```SQL
|
31
|
+
DO $$ DECLARE
|
32
|
+
wr record;
|
33
|
+
BEGIN
|
34
|
+
drop table if exists item_agg;
|
35
|
+
create table item_agg(item text, item_date date);
|
36
|
+
for wr in select distinct item_date from list order by item_date
|
37
|
+
loop
|
38
|
+
insert into item_agg
|
39
|
+
select from list
|
40
|
+
where item_date=wr.item_date
|
41
|
+
order by item limit 100
|
42
|
+
;
|
43
|
+
end loop;
|
44
|
+
END$$
|
25
45
|
```
|
3
訂正
answer
CHANGED
@@ -9,8 +9,8 @@
|
|
9
9
|
) agg
|
10
10
|
```
|
11
11
|
```DATA
|
12
|
-
create table
|
12
|
+
create table list(item text, item_date date);
|
13
|
-
insert into
|
13
|
+
insert into list values
|
14
14
|
('aaa','2018/5/21')
|
15
15
|
,('bbb','2018/5/21')
|
16
16
|
,('ccc','2018/5/21')
|
2
訂正
answer
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
一度配列として畳んで、2個だけを対象に再度配列を展開します。
|
2
2
|
```SQL
|
3
|
-
create table
|
3
|
+
create table item_agg as
|
4
4
|
select item_date, unnest(item_list[1:2]) as item
|
5
5
|
from (
|
6
6
|
select item_date, array_agg(item order by item) as item_list
|
1
追記
answer
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
一度配列として畳んで、2個だけを対象に再度配列を展開します。
|
2
2
|
```SQL
|
3
|
+
create table itm_agg as
|
3
4
|
select item_date, unnest(item_list[1:2]) as item
|
4
5
|
from (
|
5
6
|
select item_date, array_agg(item order by item) as item_list
|