SELECT
MAX(CASE WHEN product = 'apple' THEN amount END) AS max_apple_amount,
MAX(CASE WHEN product = 'samsung' THEN amount END) AS max_samsung_amount
FROM abc;
select col1,col2...,Max(amount) from abc where product in ('apple','samsung') group by col1,col2...
如果您需要按产品列出最大金额行和计数的所有详细信息,我建议您进行以下查询:
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
4条答案
按热度按时间4jb9z9bj1#
我怀疑条件聚合可能就是你所追求的:
66bbxpm52#
是的,可能有区别。那是因为
UNION
正在执行DISTINCT
,这意味着如果在每列中选择了具有相同值的行,则只返回其中一个。最近,如果你执行一些聚合
SUM
或者COUNT
你会得到不同的结果。例如:在您的情况下,最好使用:
2ul0zpep3#
问题不在于询问,而在于解释。
因为您使用的是max(amount)并且只有两个产品(苹果和三星),所以它将给您两个记录中的任何一个,并且两个max(amount)中的一个记录是相同的。当您使用union时,它会丢弃重复项。
如果您想在不使用联合的情况下使用相同的查询,请参阅下面的
请注意cola、colb、colc是表中列的名称。
类似地,如果希望按并集得到相同的结果,请使用列和分组方式,然后查看结果。
让我知道,如果你了解它,需要任何帮助与实际查询。
2q5ifsrm4#
选择最大值(amount)的列时,必须按列分组。查询是:
如果您需要按产品列出最大金额行和计数的所有详细信息,我建议您进行以下查询: