Làm cách nào để lấy tối thiểu / tối đa hai số nguyên trong Postgres / SQL?


146

Làm cách nào để tìm tối đa (hoặc tối thiểu) của hai số nguyên trong Postgres / SQL? Một trong các số nguyên không phải là một giá trị cột.

Tôi sẽ đưa ra một kịch bản ví dụ:

Tôi muốn trừ một số nguyên từ một cột (trong tất cả các hàng), nhưng kết quả không được nhỏ hơn 0. Vì vậy, để bắt đầu, tôi có:

UPDATE my_table
SET my_column = my_column - 10;

Nhưng điều này có thể làm cho một số giá trị âm. Những gì tôi muốn (trong mã giả) là:

UPDATE my_table
SET my_column = MAXIMUM(my_column - 10, 0);

Liên quan, bạn có thể tạo một tập dữ liệu hợp nhất và sau đó tối đa hóa nó, trong máy chủ sql ít nhất là stackoverflow.com/questions/124417/iêu
Kzqai

Câu trả lời:



17

Bạn muốn sql nội tuyến case:

set my_column = case when my_column - 10 > 0 then my_column - 10 else 0 end

max() là một hàm tổng hợp và nhận tối đa một hàng của tập kết quả.

Chỉnh sửa: rất tiếc, không biết về greatestleasttrong postgres. Sử dụng thay thế.


10
Phiên bản này hữu ích nếu bạn bị hạn chế đối với SQL tiêu chuẩn.
Don Kirkby
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.