sql - 可以选择 * 与选择所需的列给出不同的结果吗?
问题描述
我正在使用一个查询,它给出了苹果产品和三星产品的最大销售额之和。
我用 union 来显示这两个
Select max(amount) from abc
Where product = 'apple'
Union
Select max(amount) from abc
Where product = 'samsung'
当我使用abc 与需要select *
的所有列时,我得到不同的值。select columns
联合中是否存在需要的值select *
和选择列不同的情况?
解决方案
选择具有 Max(amount) 的列时,您必须按列分组。查询是:
select col1,col2...,Max(amount) from abc where product in ('apple','samsung') group by col1,col2...
如果您想要 Max amount 行的所有详细信息并按产品计数。我建议您进行以下查询:
select * from (SELECT *, ROW_NUMBER() OVER (PARTITION BY product ORDER BY amount DESC) AS rn FROM abc) tmp where product in ('apple','samsung') and rn=1
推荐阅读
- excel - SUMPRODUCT 仅适用于本周条目的两个日期之间的差异
- python - python - 如何将4个数据集文件夹拆分到python中的不同文件夹?
- javascript - Promise Chain 中条件内的异步调用在进行之前未完成
- javascript - indexOf 给出误报
- ios - 重复的主页指示器外观
- python - 在 DocPlex 中将线性表达式传递给二次形式时出错
- sas - 在 SAS 中提取 2 列并附加为行
- groff - groff:分页后线宽不正确
- c# - 实例和对象是一回事吗?
- reactjs - 在反应原生应用程序中使用 axios 实例中的 API 令牌