sql 几个字段最小值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql 几个字段最小值相关的知识,希望对你有一定的参考价值。
sql2005 ,其中有几个字段:
jiage1,jiage2,jiage3,jiage4,jiage5,jiage6,jiage7
都是int类型;
用一条select语句来查询这几个字段中的最小值;
你们意思理解错了,是一条记录里的多个字段求最小值,不是简单的多条记录求最小值
select case when jiage_k> jiage_c then jiage_c else jiage_k end as jiage_min from (
select case when jiage_a> jiage_b then jiage_b else jiage_a end as jiage_k,jiage_c from (
select case when jiage1>jiage2 then jiage2 else jiage1 end as jiage_a,
case when jiage3>jiage4 then jiage3 else jiage4 end as jiage_b,
case when jiage5>jiage6 then jiage5 else jiage6 end as jiage_c
from 表名) a
) b
这样就可以查出没行记录中最小的值是多少 那如果还想知道字段名 可以left join 并且用case去对比就知道了 参考技术A MIN() 返回 最小值追问
你们意思理解错了,是一条记录里的多个字段求最小值,不是简单的多条记录求最小值
参考技术B 用 MIN聚合函数试试如何在 SQL 中分组和选择最小值
【中文标题】如何在 SQL 中分组和选择最小值【英文标题】:How to GROUP and choose lowest value in SQL 【发布时间】:2012-04-10 18:26:31 【问题描述】:我的表格由以下字段组成:
id | date_from | date_to | price
--------------------------------------------
CK1 22-12-2012 29-12-2012 800
CK1 22-12-2012 29-12-2012 1200
CK2 22-12-2012 29-12-2012 1400
CK2 22-12-2012 29-12-2012 1800
CK2 22-12-2012 29-12-2012 2200
如何创建按 ID、DATE_FROM、DATE_TO 对结果进行分组并从价格中选择最低值的 SQL 选择。
所以结果是
CK1 22-12-2012 29-12-2012 800
CK2 22-12-2012 29-12-2012 1400
【问题讨论】:
【参考方案1】:如果您的 dbms 支持 cte,那么您可以这样做;
测试数据
DECLARE @tbl TABLE
(
id VARCHAR(100),
date_from VARCHAR(100),
date_to VARCHAR(100),
price INT
)
INSERT INTO @tbl
VALUES
('CK1','22-12-2012','29-12-2012',800),
('CK1','22-12-2012','29-12-2012',1200),
('CK2','22-12-2012','29-12-2012',1400),
('CK2','22-12-2012','29-12-2012',1800),
('CK2','22-12-2012','29-12-2012',2200)
查询
;WITH CTE
AS
(
SELECT
RANK() OVER(PARTITION BY id ORDER BY price ASC) AS RowNbr,
tbl.*
FROM
@tbl AS tbl
)
SELECT
*
FROM
CTE
WHERE
CTE.RowNbr=1
【讨论】:
这个方案也适用于更复杂的情况。【参考方案2】:SELECT id, date_from, date_to, min(price)
FROM my_table
GROUP BY id, date_from, date_to
【讨论】:
【参考方案3】:像这样:
SELECT id, date_from, date_to, MIN(price)
FROM TableName
GROUP BY id, date_from, date_to
【讨论】:
【参考方案4】:select id, date_from, date_to, min(price)
from table
group by id, date_from, date_to
【讨论】:
如果 id 的每一行都是唯一的数字并且不能像 OP 中的示例那样重复怎么办?我们如何在不分组的情况下显示 id? 见***.com/questions/44231218/… 下面使用RANK()的方案也可以。以上是关于sql 几个字段最小值的主要内容,如果未能解决你的问题,请参考以下文章