CREATE TABLE entries (
id serial NOT NULL,
title character varying,
load_sequence integer
);
ve veri GRUP girdileri kesintisiz olarak nasıl sıralanır?
INSERT INTO entries(title, load_sequence) VALUES ('A', 1);
INSERT INTO entries(title, load_sequence) VALUES ('A', 2);
INSERT INTO entries(title, load_sequence) VALUES ('A', 3);
INSERT INTO entries(title, load_sequence) VALUES ('A', 6);
INSERT INTO entries(title, load_sequence) VALUES ('B', 4);
INSERT INTO entries(title, load_sequence) VALUES ('B', 5);
INSERT INTO entries(title, load_sequence) VALUES ('B', 7);
INSERT INTO entries(title, load_sequence) VALUES ('B', 8);
SQL yazmak için PostgreSQL bir yolu var mı olduğunu
load_sequence
bunları sipariş sonra aynı
title
kesimleri tarafından gruplar verileri.
=# SELECT id, title, load_sequence FROM entries ORDER BY load_sequence;
id | title | load_sequence
----+-------+---------------
9 | A | 1
10 | A | 2
11 | A | 3
13 | B | 4
14 | B | 5
12 | A | 6
15 | B | 7
16 | B | 8
VE ben grup istiyorum: Yani
=# SELECT title, string_agg(id::text, ',' ORDER BY id) FROM entries ???????????;
yüzden olacağını sonucu:
SELECT title, string_agg(id::text, ',' ORDER BY id)
FROM (
SELECT id, title,
ROW_NUMBER() OVER (ORDER BY load_sequence) -
ROW_NUMBER() OVER (PARTITION BY title
ORDER BY load_sequence) AS grp
FROM entries) AS t
GROUP BY title, grp
Hesaplanan:
title | string_agg
-------+-------------
A | 9,10,11
B | 13,14
A | 12
B | 15,16
Ne yazık ki bu gibi sorular tabloyu oluşturma komut dosyaları ve örnek verileri ayarlayan runnable 'INSERT' ifadelerini içeren nadirdir. +1 benden. –