下面是我运行的查询,以获取给定对象的每个键的每个值的计数:
SELECT key, value, COUNT(value)
FROM keyval kv
WHERE object_id = 123456
GROUP BY kv.key, kv.value
ORDER BY kv.key, kv.value;
我正在查询的表非常简单。只是:
object_id BIGINT
key VARCHAR(45)
value VARCHAR(45)
所以我得到的价值观是:
Color Red 26
Color Blue 24
Shape Circle 14
Shape Square 12
所以我想解析蓝色和正方形的结果,但是保留红色和圆形的结果。这可能吗?
最佳答案
试试这个,但是要注意红色和蓝色都有26个。。。两者都将被归还。
with cte as
(select k,v,count(v) c
from #kvp
group by k,v)
select results.*
from
cte restults
inner join (select k, max(c) m from cte group by k) filter
on restults.k = filter.k
where
filter.m = restults.c
and id = @id
关于sql - 是否可以在一个查询中最大化表中每个键的值出现次数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27713587/