PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

максимална стойност по редове (от n колони) - Елегантен подход

В PostgreSQL можете да използвате GREATEST израз:

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

Тъй като това не е стандартен SQL, вероятно няма да работи в други бази данни.

Във всеки случай можете да намалите броя на сравненията, след второто WHEN израз на CASE изразът се тества само ако първият не е 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

Не знам дали смятате това за по-елегантно, но вместо AND клаузи можете също да използвате ALL с VALUES израз:

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. ActiveRecord се опитва да се свърже с грешната база данни с помощта на rbenv

  2. Най-новите тенденции в PostgreSQL:Най-отнемащи време задачи и важни показатели за проследяване

  3. Как мога да създам персонализиран тип колона с Typesafe Slick в Scala?

  4. Балансирането на натоварването в PostgreSQL в облака става лесно

  5. Какво означава, когато процес на PostgreSQL е неактивен в транзакцията?