簡體   English   中英

SQL-在計算中設置最小值或最大值

[英]SQL - set min or max value in calculation

我的數據庫項目包含其規格(標識,名稱,長度,高度,重量,數量等)。

我想要

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

但是,為了使我的公式在newVar的計算中newVar ,如果'length'小於10,我希望在計算中將其反映為10。 “高度”也一樣:如果大於10,則需要在計算中將其反映為10。

我該如何實現?

您可以使用一些CASE條件完成此操作,如果lengthheight分別< 10> 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

一種選擇是使用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

GREATESTLEAST不在SQL標准中,但是大多數RDBMS都有它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM