db2 sql,如何仅在一张表的同一查询中获取最小值和最大值?
Posted
技术标签:
【中文标题】db2 sql,如何仅在一张表的同一查询中获取最小值和最大值?【英文标题】:db2 sql, how to get min and max value only in the same query with one table? 【发布时间】:2021-02-21 22:09:20 【问题描述】:用这个查询
SELECT distinct name,MIN(price) minprice, MAX(price) maxprice FROM cars where group='CNO' GROUP BY name HAVING MIN(price) > 1 order by minprice;
我得到了这个结果
NAME MINPRICE MAXPRICE
---------------------------------------- ----------- -----------
Super CNO 20000 20000
CNO 340 40000 40000
CNO 110 60000 60000
CNO 790 100000 100000
如何仅获取 MIN 和 MAX 价格来查看最贵的汽车? 像这样的
NAME MINPRICE MAXPRICE
---------------------------------------- ----------- -----------
Super CNO 20000 20000
CNO 790 100000 100000
当然,我们不知道查询前的最低和最高价格,所以 20000 到 100000 之间是无效的。
【问题讨论】:
【参考方案1】:您可以使用窗口函数。您的结果显示 min 和 max 具有相同的值,这让我怀疑每个名称只有一行。如果是这样:
select *
from (
select name, price,
rank() over(order by price desc) rn_desc,
rank() over(order by price) rn_asc
from cars
where price > 1
) c
where 1 in (rn_asc, rn_desc)
如果你真的需要聚合:
select *
from (
select name, min(price) min_price, max(price) max_price
rank() over(order by max(price) desc) rn_desc,
rank() over(order by min(price)) rn_asc
from cars
group by name
having min(price) > 1
) c
where 1 in (rn_asc, rn_desc)
【讨论】:
以上是关于db2 sql,如何仅在一张表的同一查询中获取最小值和最大值?的主要内容,如果未能解决你的问题,请参考以下文章