1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| select pays
, ville
, produit
, dense_rank() over(partition by ville order by produit asc) + dense_rank() over(partition by ville order by produit desc) - 1 as nb_produit_dst_ville
, dense_rank() over(partition by Pays order by produit asc) + dense_rank() over(partition by Pays order by produit desc) - 1 as nb_produit_dst_pays
from (values ('france', 'paris' , 'vélo' )
, ('france', 'lyon' , 'vélo' )
, ('france', 'paris' , 'autobus')
, ('france', 'marseille', 'taxi' )
, ('france', 'marseille', 'taxi' )
, ('france', 'marseille', 'taxi' )
, ('france', 'lyon' , 'autobus')
, ('espagne', 'madrid' , 'vélo' )
, ('espagne', 'huesca' , 'taxi' )
, ('espagne', 'leon' , 'taxi' )) as t (pays, ville, produit)
order by 1, 2;
pays ville produit nb_produit_dst_ville nb_produit_dst_pays
------- --------- ------- -------------------- -------------------
espagne huesca taxi 1 2
espagne leon taxi 1 2
espagne madrid vélo 1 2
france lyon vélo 2 3
france lyon autobus 2 3
france marseille taxi 1 3
france marseille taxi 1 3
france marseille taxi 1 3
france paris vélo 2 3
france paris autobus 2 3 |
Partager