PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

SQL różnych różnych kolumn

pytania są zwykle rozwiązywane za pomocą funkcji okna:

select *
from (
   select book_id, author_id, mark, year, 
          row_number() over (partition by author_id order by case mark when 'GREAT' then 1 when 'MEDIUM' then 2 else 3 end) as rn
   from books
) t
where rn = 1;

Powyższe jest standardowym ANSI SQL, ale w Postgres używa się (zastrzeżonego) distinct on jest zwykle znacznie szybszy:

select distinct on (author_id) book_id, author_id, mark, year, 
from books
order by author_id, 
         case mark when 'GREAT' then 1 when 'MEDIUM' then 2 else 3 end



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Użyj zmiennej ustawionej przez meta-polecenie psql wewnątrz bloku DO

  2. Jak generować UUID bez myślników

  3. Jak mogę uzyskać wiersze WSTAWIONE i ZAKTUALIZOWANE dla operacji UPSERT w postgres?

  4. Rekord aktywny:Zapytanie JSON

  5. Rails + Postgres:Nie zwraca informacji o strefie czasowej w kolumnie z połączonej tabeli