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

Forenkling af en forespørgsel med en LIMIT i en underforespørgsel og WHERE-sætninger duplikeret i underforespørgslen og den ydre forespørgsel

Du kan bruge 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;

DBFiddle Demo




  1. sqlplus-sætning fra kommandolinjen

  2. Hvordan opretter man en fremmednøgle med ON UPDATE CASCADE på Oracle?

  3. Oracle datetime i VB.net

  4. Forespørgsel kører hurtigt i Query Analyzer, men langsomt i C#-applikation