sql >> Database teknologi >  >> RDS >> PostgreSQL

Generering af en ordnet sekvensrangering på kompleks forespørgsel

Hvad med at fordoble row_number()?

with enchilada as (
SELECT firstname,lastname,personid,year,(SELECT COALESCE(SUM(thevalue),0)
FROM assets WHERE personidref = w.personid) AS assets ,
(SELECT COALESCE(SUM(amount),0) FROM liabilities WHERE personidref = w.personid AND year = w.year) AS liabilities,
((SELECT COALESCE(SUM(thevalue),0) FROM assets WHERE personidref = w.personid AND year = w.year) - (SELECT COALESCE(SUM(amount),0) FROM liabilities WHERE personidref = w.personid AND year = w.year)) as worth,
row_number() over(ORDER BY w.worth) as rank
FROM members w
WHERE year = 2012
ORDER BY worth DESC LIMIT 2 )
select row_number() over (order by rank) as new_rank, * from enchilada;


  1. forslag til oprettelse af mysql-databasestruktur

  2. Sjovt med Djangos nye Postgres-funktioner

  3. Hvordan vælger man et begrænset antal rækker for hver fremmednøgle?

  4. MySQL Sorter alfabetisk, men ignorer