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

tăng giá trị lớn nhất (trong số n cột) - Cách tiếp cận thanh lịch

Trong PostgreSQL, bạn có thể sử dụng GREATEST biểu thức:

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

Vì đó không phải là SQL tiêu chuẩn, nó có thể sẽ không hoạt động trong các cơ sở dữ liệu khác.

Ở bất kỳ mức nào, bạn có thể giảm số lượng so sánh, kể từ WHEN thứ hai biểu thức của một CASE câu lệnh chỉ được kiểm tra nếu câu lệnh đầu tiên không phải là 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

Tôi không biết bạn có coi điều đó thanh lịch hơn không, nhưng thay vì AND mệnh đề bạn cũng có thể sử dụng ALL với VALUES biểu thức:

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. Xóa các hàng trùng lặp (không xóa tất cả các hàng trùng lặp)

  2. Một cách mới để cá nhân hóa việc giám sát PostgreSQL của bạn với Prometheus

  3. TẠO SCHEMA NẾU KHÔNG TỒN TẠI làm tăng lỗi khóa trùng lặp

  4. Biểu mẫu Django để truy vấn cơ sở dữ liệu (các mô hình)

  5. Postgres:kiểm tra xem trường mảng có chứa giá trị không?