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

Uproszczenie zapytania z LIMIT w podzapytaniu i klauzulami WHERE zduplikowanymi w podzapytaniu i zapytaniu zewnętrznym

Możesz użyć DENSE_RANK :

WITH cte AS (
  SELECT t.id AS trans_id,
         c.id AS customer_id,
         c.company,
         c.first_name,
         c.last_name,
         t.due,
         DENSE_RANK() OVER(ORDER BY c.company, c.first_name, c.last_name) rn
  FROM customers AS c
  JOIN transactions AS t ON t.customer_id = c.id
  WHERE t.due > 0 AND t.form_type = 'invoice'
)
SELECT * FROM cte WHERE rn <= 3;

Demo DBFiddle




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak uzyskać klucze podstawowe tabeli z Postgres za pośrednictwem plpgsql?

  2. Znajdź rekordy, w których dołączenie nie istnieje

  3. Zainstaluj libpq-dev na Mac OS X

  4. Część 2:jak uzyskać sumę zapytania opartego na partycji bez faktycznego obracania?

  5. Postgres COUNT liczba wartości kolumn z INNER JOIN