PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Đơn giản hóa truy vấn với LIMIT trong truy vấn con và mệnh đề WHERE được sao chép trong truy vấn con và truy vấn bên ngoài

Bạn có thể sử dụng 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;

Bản trình diễn 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. Định cấu hình kết nối từ xa RubyMine với Heroku PostgreSQL

  2. ST_DWithin đôi khi không sử dụng chỉ mục

  3. Tôi không biết cách Postgresql tạo người dùng trên máy mac của tôi

  4. PostgreSQL và QSqlQuery.bindValue () chậm

  5. Làm cách nào để phân tích cú pháp mảng JSON trong postgresql?