Obtenez une paire d'enregistrements à partir d'une clause group by
P粉195402292
P粉195402292 2024-02-04 00:15:13
0
1
425

J'ai une table de cette table et j'utilise cette table pour obtenir des enregistrements

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

et la clause group by fonctionnent bien, mais je veux avoir au plus 4 agrégats sample_no par ligne.

Supposons que je reçoive

de la base de données
string_agg as (0001, 0002, 0003, 0004, 0005, 0006)

D'affilée mais je veux ça

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

Aidez-moi à résoudre ce problème.

P粉195402292
P粉195402292

répondre à tous(1)
P粉564192131

Si vous souhaitez faire cela dans la base de données, vous pouvez utiliser 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)
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!