SQL - 在计算中设置最小值或最大值

时间:2013-03-26 01:44:26

标签: sql select

我的数据库项目包含其规格(ID,名称,长度,身高,体重,数量等)。

我想

SELECT id, name, length*3 + height*5 as 'newVar' 
FROM items 
ORDER BY newVar DESC

但是,为了让我的公式在newVar的计算中起作用,如果'length'小于10,我希望它在计算中反映为10。 “高度”也是如此:如果它大于10,我需要在计算中将其反映为10.

我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:4)

您可以使用几个CASE条件完成此操作,如果10length分别为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

http://sqlfiddle.com/#!2/2bfb1/2

答案 1 :(得分:1)

一种选择是使用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

答案 2 :(得分:0)

可以更简单:

SELECT id, name, GREATEST(length, 10) * 3 + LEAST(height, 10) * 5 AS newVar
FROM   items
ORDER  BY newVar DESC

GREATESTLEAST不在SQL标准中,但大多数RDBMS都有它们。