2017-02-09 2 views
0

Je date au format aaaammjj dans une colonne int et je voudrais groupe par mois soit yyyymm.I've essayé deux versions ci-dessous laGroupe par YYYYMM de la colonne AAAAMMJJ int - Postgresql

select to_char(to_timestamp(create_dt),'YYYYMM'),count(*) from table_name 
group by to_char(to_timestamp(create_dt),'YYYYMM') 
order by to_char(to_timestamp(create_dt),'YYYYMM') desc 

ET

select to_char(create_dt,'YYYYMM'),count(*) from table_name 
group by to_char(create_dt,'YYYYMM') 
order by to_char(create_dt,'YYYYMM') desc 
+0

Qu'est-il arrivé lorsque vous avez essayé ces versions? – lurker

+0

@lurker a juste 1 ligne avec votre requête similaire à la deuxième que j'ai posté. "YYYYMM"; 733103965. J'ai converti la colonne en chaîne et utilisé la sous-chaîne pour grouper les 1ers 6 caractères. –

Répondre

1
select create_dt/100, count(*) 
from t 
group by 1 
order by 1 desc 
limit 6 
+0

Nice!. Quelque chose de mal avec ma réponse ci-dessous? –

+1

@inquisitive_mind Pas mal juste trop verbeux. –

0

Imaginé, toute autre manière serait utile.

select substring(create_dt::int8,1,6),count(*) from table 
group by substring(create_dt::int8,1,6) 
order by substring(create_dt::int8,1,6) desc 
limit 6; 
+0

comment planifiez-vous substr pour int8? - peut être 'substring (create_dt, 1,6) :: int8'? –