sql >> Database >  >> RDS >> PostgreSQL

Een query vereenvoudigen met een LIMIT in een subquery en WHERE-clausules gedupliceerd in de subquery en buitenste query

Je zou DENSE_RANK . kunnen gebruiken :

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;

DBFiddle-demo




  1. Verzoeken zijn vastgelopen in ActiveRecord::QueryCache middleware

  2. Bij het uitvoeren van een script op SQLPlus, wordt een reeks getallen afgedrukt in plaats van uitvoer

  3. Laat alle tabellen vallen waarvan de naam begint met een bepaalde tekenreeks

  4. SPARQL-query om alle ouder van een knooppunt te krijgen