PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Maksymalna wartość rzędowa (z n kolumn) - Eleganckie podejście

W PostgreSQL możesz użyć GREATEST wyrażenie:

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

Ponieważ nie jest to standardowy SQL, prawdopodobnie nie będzie działać w innych bazach danych.

W każdym razie możesz zmniejszyć liczbę porównań, ponieważ drugie WHEN wyrażenie CASE instrukcja jest testowana tylko wtedy, gdy pierwsza nie była 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

Nie wiem, czy uważasz to za bardziej eleganckie, ale zamiast AND klauzul, których możesz również użyć ALL z VALUES wyrażenie:

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. BŁĄD:w Postgresie znaleziono więcej niż jedną posiadaną sekwencję

  2. utworzyć milion tabeli w bazie danych?

  3. Bezpiecznie zmieniaj nazwy tabel za pomocą kolumn klucza podstawowego szeregowego

  4. Pula połączeń Postgres — wielu użytkowników

  5. Jak zmienić formatowanie moich wartości zwracanych w tej funkcji?