sql - 从表中获取具有最小值和最大值的 2 行
问题描述
我有一个包含以下列的表产品:
id | product_name | price
1 | Red Shirt | 10.0
2 | White Shirt | 15.0
3 | Black Shirt | 9.0
4 | Yellow Shirt | 12.0
如何进行查询以返回具有 max(price) 和 min(price) 的行?使用上面的示例,输出应该是:
id | product_name | price
3 | Black Shirt | 9.0
2 | White Shirt | 15.0
在重复值的情况下,选择哪一个并不重要,只要输出只有 2 行。
解决方案
其他几个答案不满足最后一个要求......“如果出现重复值,选择哪一个并不重要,只要输出只有 2 行。”
如果有两个具有相同值的产品,它们将返回三行。
下面通过添加 rownum = 1 子句来解决这个问题。
with testtab (id, product_name, price) as
(select 1, 'Red Shrit', 10.00 from dual
union
select 2, 'Whtie Shrit', 15.00 from dual
union
select 3, 'Black Shrit', 9.00 from dual
union
select 4, 'Yellow Shrit', 12.00 from dual
union
select 4, 'Pink Shrit', 15.00 from dual)
select id, product_name, price
from testtab
where price in (select max(price) from testtab)
and rownum = 1
union
select id, product_name, price
from testtab where price in (select min(price) from testtab)
and rownum = 1
推荐阅读
- spring - 如何保护通过 HTTP 请求发送的值?
- python - 是否有一种单行解决方案可以将标量转换为每个元素中具有相同值的 n 长度数组
- python - 有没有办法通过在两个维度上重复元素来扩展数组?
- c# - 无法打开串口 - UWP
- reactjs - 在 reducer 中返回嵌套对象中状态的更好方法
- python - 使用 itemAt 从 QFormLayout 中的 QLineEdit 获取文本
- sql-server - SQL Server 稀疏列 - 应用于具有现有数据的列似乎不会节省空间
- database - Laravel 迁移,列类型 YEAR
- javascript - 如何将 PHP 变量与模态 ID 进行比较?
- spring-boot - 当我在运行时尝试注册新用户时,AuthenticationManagerBuilder 的内存身份验证不起作用