วิธีรับจำนวนเต็มสองจำนวนขั้นต่ำสุด / สูงสุดใน Postgres / SQL


147

ฉันจะหาจำนวนสูงสุด (หรือต่ำสุด) ของจำนวนเต็มสองจำนวนใน Postgres / SQL ได้อย่างไร หนึ่งในจำนวนเต็มไม่ใช่ค่าคอลัมน์

ฉันจะยกตัวอย่างสถานการณ์:

ฉันต้องการลบจำนวนเต็มจากคอลัมน์ (ในทุกแถว) แต่ผลลัพธ์ไม่ควรน้อยกว่าศูนย์ ดังนั้นเพื่อเริ่มต้นฉันมี:

UPDATE my_table
SET my_column = my_column - 10;

แต่สิ่งนี้อาจทำให้ค่าบางอย่างเป็นลบ สิ่งที่ฉันต้องการ (ในรหัสหลอก) คือ:

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

ที่เกี่ยวข้องคุณสามารถสร้างชุดข้อมูลยูเนี่ยนแล้วสูงสุดที่ใน
sql-

คำตอบ:



17

คุณต้องการอินไลน์ sql case:

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

max() เป็นฟังก์ชั่นรวมและได้รับสูงสุดของแถวของชุดผลลัพธ์

แก้ไข: อุ๊ปส์ไม่รู้เกี่ยวกับgreatestและleastใน postgres ใช้สิ่งนั้นแทน


10
รุ่นนี้มีประโยชน์หากคุณ จำกัด SQL มาตรฐาน
Don Kirkby
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.