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

sql chọn ngày sớm nhất cho nhiều hàng

select customer_name,
       kwh,
       reading_date, 
       reading_time
from (
   select customer_name,
          kwh,
          reading_time,
          reading_date,
          row_number() over (partition by customer_name order by reading_time) as rn
   from readings
   where reading_date = date '2012-11-17'
) t
where rn = 1

Thay thế:

select r1.customer_name,
       r1.kwh, 
       r1.reading_date,
       r1.reading_time
from readings r1
where reading_date = date '2012-11-17'
and reading_time = (select min(r2.reading_time)
                    from readings
                    where r2.customer_name = r1.customer_name
                    and r2.read_date = r1.reading_date);

Nhưng tôi hy vọng cái đầu tiên sẽ nhanh hơn.

Btw:tại sao bạn lưu trữ ngày và giờ trong hai cột riêng biệt? Bạn có biết rằng điều này có thể được xử lý tốt hơn với timestamp không cột?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Loại THAM GIA nào để sử dụng

  2. ActiveRecord cố gắng kết nối với cơ sở dữ liệu sai bằng rbenv

  3. Hàm PostgreSQl trả về nhiều tập kết quả động

  4. PostgreSQL:CHÈN đa năng

  5. Tương lai của Postgres-XL