gpt4 book ai didi

sql - 有没有办法在 Oracle 12c 中有条件地设置聚合值?

转载 作者:搜寻专家 更新时间:2023-10-30 21:43:32 26 4
gpt4 key购买 nike

我希望设置一个查询,该查询将根据字段在分组中是否具有指定值来填充 GROUP BY 查询中的列。我在 Oracle 12c 中工作。

示例表:

uname    event   tstamp
------ ------ ----------------------
user1 3 10-SEP-19 11.00.00 AM
user1 9 14-SEP-19 11.00.00 AM
user1 32 14-AUG-19 11.00.00 AM
user1 21 20-AUG-19 11.00.00 AM
user1 8 23-AUG-19 11.00.00 AM
user2 9 14-AUG-19 11.00.00 AM
user2 8 23-AUG-19 11.00.00 AM
user2 3 05-SEP-19 11.00.00 AM
user3 15 06-AUG-19 11.00.00 AM
user3 1 30-AUG-19 11.00.00 AM
user3 7 14-SEP-19 11.00.00 AM

我希望查询输出:

uname    event   tstamp
------ ------ ---------------------
user1 21 14-SEP-19 11.00.00 AM
user2 8 05-SEP-19 11.00.00 AM
user3 7 14-SEP-19 11.00.00 AM

我正在寻找一个类似这样的查询:

select uname, SomeAggregate(if contains 21 then 21 else DoesNotMatter) event, max(tstamp)
from table
group by uname

最佳答案

这是另一种方式,可能比其他方式更短:

select uname, 
coalesce(max(case when event = 21 then event else null end), max(event)) event,
max(tstamp)
keep ( dense_rank first order by case when event = 21 THEN 0 ELSE 1 END asc,
event desc ) tstamp
from test
group by uname;

关于sql - 有没有办法在 Oracle 12c 中有条件地设置聚合值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58017581/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com