我需要计算我的最大数量,但它不起作用,Oracle 不允许深度聚合..
这是没有 MAX 的结果:
187 1 2
187 3 1
159 1 1
159 3 1
159 2 8
188 2 9
188 1 2
188 3 1
187 2 9
select tt.token_id, tt.tag_variable_type_id, max(count(*)) as usage
from tokens tt
left outer join token_xref ttx on ttx.token_id = tt.token_id
where tag_variable_type_id in (1, 2, 3) and ttx.template_id = 52
group by tt.token_id, tt.tag_variable_type_id
我也试着把它放在 max(count(*)); 但没有工作
有没有办法在一个查询中获得 COUNT() 的 MAX 而没有内部选择
我期待在MAX之后
187 2 9
159 2 8
188 2 9
编辑
我还有一个问题是使用分析查询,而不是仅仅猜测如果我有重复要排除哪一行
MIN(tag_variable_type_id) KEEP (DENSE_RANK LAST ORDER BY usage) AS tag_variable_type_id
我使用解码函数分配给我的变量类型“优先级”,所以我的猜测是
MIN(priority) KEEP (DENSE_RANK LAST ORDER BY usage) AS priority
,请参阅查询
但我又失去了我的 tag_variable_type_id..
无论如何要保留它?我把它解码回来,但可能是更好的方法
decode (MIN(priority) KEEP (DENSE_RANK LAST ORDER BY usage), 1,2, 2,1, 3,3) as typevar,
select token_id,
MIN(priority) KEEP (DENSE_RANK LAST ORDER BY usage) AS priority,
MAX(usage) AS usage
from ( select tt.token_id, tt.tag_variable_type_id,
decode(
tt.tag_variable_type_id,
1, 2,
2, 1,
3, 3
) as priority,
count(*) as usage
from tag_tokens tt
left outer join template_token_xref ttx on ttx.token_id = tt.token_id
where tag_variable_type_id in (1, 2, 3) and ttx.template_id = 52
group by tt.token_id, tt.tag_variable_type_id)
group by token_id;