teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

4

追記

2019/06/21 11:44

投稿

sazi
sazi

スコア25430

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

訂正

2019/06/21 11:44

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -9,8 +9,8 @@
9
9
  ) agg
10
10
  ```
11
11
  ```DATA
12
- create table tbl(item text, item_date date);
12
+ create table list(item text, item_date date);
13
- insert into tbl values
13
+ insert into list values
14
14
  ('aaa','2018/5/21')
15
15
  ,('bbb','2018/5/21')
16
16
  ,('ccc','2018/5/21')

2

訂正

2019/06/21 11:24

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -1,6 +1,6 @@
1
1
  一度配列として畳んで、2個だけを対象に再度配列を展開します。
2
2
  ```SQL
3
- create table itm_agg as
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

追記

2019/06/21 11:23

投稿

sazi
sazi

スコア25430

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