首页 > 解决方案 > 如何从查询中指定最大值和最小值?

问题描述

我有这样的表,我需要在表中指定最高和最低价格。

id   value   price
1     aaa     100
2     bbb     200
3     ccc     300

像这样:

id   value   price   status
1     aaa     100     min
2     bbb     200     
3     ccc     300     max

使用此代码,我可以获得最大和最小价格值:

SELECT
    min(price) as min_price
    , max(price) as max_price
FROM 
(
    select *
    From MyTable
) tmp;

标签: sqlsql-servertsqlwindow-functions

解决方案


您需要使用max,min窗口函数,如下所示。

declare @Test table (id int, [value] varchar(3), price money);

insert into @Test (id, [value], price)
values
(1, 'aaa', 100)
, (2, 'bbb', 200)
, (3, 'ccc', 300);

select *
  , case when max(price) over () = price then 'max'
  when min(price) over () = price then 'min'
  else '' end status
from @Test;

回报:

id  value   price   status
1   aaa     100.00  min
2   bbb     200.00  
3   ccc     300.00  max

这不考虑关系,但是,您需要指定您希望在这种情况下发生的事情。

注意:如果您可以使用 DDL/DML 设置您的问题,如此处所示 - 它可以节省回答人员的时间。


推荐阅读