fjtello / SQL-C-sharp

Common programming and coding tips and howtos
0 stars 0 forks source link

SQL syntax [#row_number #partition #rank #dense_rank #ntile] #7

Open fjtello opened 7 years ago

fjtello commented 7 years ago

select row_number() over(order by a.autonomia, p.provincia, m.municipio) num_municipio, row_number() over(partition by a.autonomia order by a.autonomia, p.provincia, m.municipio) num_municipio_en_autonomia, row_number() over(partition by a.autonomia, p.provincia order by a.autonomia, p.provincia, m.municipio) num_municipio_en_autonomiaprovincia, m.municipio, p.provincia, a.autonomia from municipios m left join provincias p on (p.idProvincia = m.IdProvincia) left join autonomias a on (a.idautonomia = p.idautonomia) order by a.autonomia, p.provincia, m.municipio;

select convert(varchar(10), fechahora, 121), rank() over (order by convert(varchar(10), fechahora, 121) desc),
dense_rank() over (order by convert(varchar(10), fechahora, 121) desc),
rank() over (partition by convert(varchar(10), fechahora, 121) order by fechahora desc), dense_rank() over (partition by convert(varchar(10), fechahora, 121) order by fechahora desc) , ntile (10) over (order by convert(varchar(10), fechahora, 121) desc) from actividad where fechahora > '2017-02-01' order by 1 desc;

; with t as ( select row_number() over(order by a.idautonomia, p.idprovincia, m.idMunicipio) numero, row_number() over (partition by p.idprovincia order by p.idprovincia) numeroP, row_number() over (partition by a.idAutonomia order by a.idautonomia) numeroA, a.idautonomia, a.autonomia, p.idprovincia, p.provincia, m.idmunicipio, m.municipio from municipios m left join provincias p on (p.idProvincia = m.idProvincia) left join autonomias a on (p.idautonomia = a.idautonomia) ) select t.numero, t.numeroA, t.numeroP, case when t.numeroA <> 1 then '' else convert(varchar(2), t.idautonomia) end idautonomia, case when t.numeroA <> 1 then '' else autonomia end autonomia, case when t.numeroP <> 1 then '' else convert(varchar(2), t.idprovincia) end idprovincia, case when t.numeroP <> 1 then '' else provincia end provincia, t.idmunicipio, t.municipio from t --where t.numeroP < 5 order by t.idautonomia, t.idprovincia, t.numeroP, t.idmunicipio;