下面是我运行的查询,以获取给定对象的每个键的每个值的计数:

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/

10-12 13:43