我的數據庫項目包含它們的規格(id,名稱,長度,高度,重量,數量等)。SQL - 設置最小或最大值計算
我想
SELECT id, name, length*3 + height*5 as 'newVar'
FROM items
ORDER BY newVar DESC
然而,爲了使我的公式中的newVar
的計算工作,如果「長度」小於10時,我希望它反映在計算10。 「高度」也是如此:如果它大於10,我需要在計算中將其反映爲10。
我該如何做到這一點?
我的數據庫項目包含它們的規格(id,名稱,長度,高度,重量,數量等)。SQL - 設置最小或最大值計算
我想
SELECT id, name, length*3 + height*5 as 'newVar'
FROM items
ORDER BY newVar DESC
然而,爲了使我的公式中的newVar
的計算工作,如果「長度」小於10時,我希望它反映在計算10。 「高度」也是如此:如果它大於10,我需要在計算中將其反映爲10。
我該如何做到這一點?
您可以用幾個CASE
條件,返回10
如果length
或height
分別爲< 10
或> 10
完成它。
SELECT
id,
name,
((CASE WHEN length < 10 THEN 10 ELSE length END) * 3 +
(CASE WHEN height > 10 THEN 10 ELSE height END) * 5) AS newVar
FROM items
ORDER BY newVar DESC
一種選擇是使用IF
(取決於你的RDBMS):
SELECT id,
name,
if(length<10,10,length)*3 + if(height>10,10,height)*5 as 'newVar'
FROM items
ORDER BY newVar DESC
或者你可以使用CASE
:
SELECT id,
name,
case when length<10 then 10 else length end * 3 +
case when height>10 then 10 else height end * 5 as 'newVar'
FROM items
ORDER BY newVar DESC
可以更簡單:
SELECT id, name, GREATEST(length, 10) * 3 + LEAST(height, 10) * 5 AS newVar
FROM items
ORDER BY newVar DESC
GREATEST
和LEAST
不在SQL標準中,但大多數RDBMS都有它們。
謝謝,簡單,完美! – 2013-03-26 01:56:53