Rufen Sie ein Datensatzpaar aus der Group-by-Klausel ab
P粉195402292
P粉195402292 2024-02-04 00:15:13
0
1
461

Ich habe eine Tabelle aus dieser Tabelle und verwende diese Tabelle, um Datensätze zu erhalten

string_agg(a2.sampl_no, ', ') as sampl_nos

und die Group-by-Klausel funktionieren gut, aber ich möchte höchstens 4 sample_no-Aggregate pro Zeile haben.

Angenommen, ich erhalte

aus der Datenbank
string_agg as (0001, 0002, 0003, 0004, 0005, 0006)

Nacheinander, aber ich will das

(0001, 0002, 0003, 0004) (0006, 0007).

Helfen Sie mir, dieses Problem zu lösen.

P粉195402292
P粉195402292

Antworte allen(1)
P粉564192131

如果您想在数据库中执行此操作,可以使用 row_number() 将记录分成四组,然后使用 string_agg()

select * from rec_agg;
┌───────────┐
│ sample_no │
├───────────┤
│ 0001      │
│ 0002      │
│ 0003      │
│ 0004      │
│ 0005      │
│ 0006      │
│ 0007      │
│ 0008      │
│ 0009      │
│ 0010      │
│ 0011      │
└───────────┘
(11 rows)


with mk_grp as (
  select *, ((row_number() over (order by sample_no)) - 1) / 4 as grp 
    from rec_agg
) 
select string_agg(sample_no, ' ,') 
  from mk_grp 
 group by grp ;
┌────────────────────────┐
│       string_agg       │
├────────────────────────┤
│ 0001 ,0002 ,0003 ,0004 │
│ 0009 ,0010 ,0011       │
│ 0005 ,0006 ,0007 ,0008 │
└────────────────────────┘
(3 rows)
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!