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

nilai maksimum baris (dari n kolom) - Pendekatan elegan

Di PostgreSQL Anda dapat menggunakan GREATEST ekspresi:

SELECT GREATEST(date_1, date_2, date_3, date_4, date_5, date_6) AS max_date
...

Karena itu bukan SQL standar, mungkin tidak akan berfungsi di database lain.

Bagaimanapun, Anda dapat mengurangi jumlah perbandingan, sejak WHEN kedua ekspresi CASE pernyataan hanya diuji jika yang pertama tidak TRUE :

CASE
   WHEN date_1 >= date_2 AND date_1 >= date_3 AND date_1 >= date_4 AND date_1 >= date_5 AND date_1 >= date_6
   THEN date_1
   WHEN date_2 >= date_3 AND date_2 >= date_4 AND date_2 >= date_5 AND date_2 >= date_6
   THEN date_2
   WHEN date_3 >= date_4 AND date_3 >= date_5 AND date_3 >= date_6
   THEN date_3
   WHEN date_4 >= date_5 AND date_4 >= date_6
   THEN date_4
   WHEN date_5 >= date_6
   THEN date_5
   ELSE date_6
END

Saya tidak tahu apakah Anda menganggap itu lebih elegan, tetapi alih-alih AND klausa Anda juga bisa menggunakan ALL dengan VALUES ekspresi:

WHEN date_1 >= ALL (VALUES (date_2), (date_3), (date_4), (date_5), (date_6))
THEN date_1
...


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Salin Massal C# ke PostgreSql

  2. Masalah konkurensi dengan psycopg2, Redshift, dan unittest

  3. Perbedaan antara Replikasi Aliran dan replikasi logis

  4. Bisakah Sqlalchemy bekerja dengan baik dengan beberapa file database SQLite terlampir?

  5. PostgreSQL Memilih Entri Terbaru untuk ID yang Diberikan