PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

sql pilih tanggal paling awal untuk beberapa baris

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

Sebagai alternatif:

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);

Tapi saya berharap yang pertama lebih cepat.

Btw:mengapa Anda menyimpan tanggal dan waktu di dua kolom terpisah? Tahukah Anda bahwa ini dapat ditangani lebih baik dengan timestamp kolom?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. jatuhkan db di postgres

  2. Postgres - ERROR:pernyataan yang disiapkan S_1 sudah ada

  3. Fungsi SQL sangat lambat dibandingkan dengan kueri tanpa pembungkus fungsi

  4. Tidak dapat menghubungkan Aplikasi Android Studio saya dengan PostgreSQL

  5. PEMBARUAN Atom untuk menambah bilangan bulat di Postgresql