sql - 如何从查询中指定最大值和最小值?
问题描述
我有这样的表,我需要在表中指定最高和最低价格。
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;
解决方案
您需要使用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 设置您的问题,如此处所示 - 它可以节省回答人员的时间。
推荐阅读
- git - 没有添加到 repo,但它仍然在拉取时显示了一些额外的日志
- swift - 我的应用程序中的图像(编码 base64)无法通过 Web 服务器发送
- python - pandas MultiIndex:获取特定级别的值和 iloc
- c# - 等待多个函数参数时的性能
- java - 使用 Spring Boot 获取大量数据
- reactjs - NPM 表示 1 个漏洞需要人工审核且无法更新
- machine-learning - 如何在 naive_bayes MultinomialNB 中计算 feature_log_prob_
- oracle - Oracle 过程到 REST API
- mongodb - 如何在 MongoDB 中展开数组?
- python - 'flag' 变为 False 时 Python (py.exe) 关闭