下面是我的数据的样例:
SELECT key1, key2, flag FROM mysegtable
它将产生如下输出:
key1 key2 flag
1 1 A
1 2 A
1 3 B
2 1 A
2 2 A
3 1 A
3 1 B
其中key1可以被认为是标题表的关键字,而key1 + key2是段表的关键字。报头->段是一对多连接。对于每个数据段条目,都有一个相关的标志A或B。我需要统计所有唯一值A、B、……的出现次数。并输出每个key1中出现频率最高的那个。此外,当出现的次数相同时,我必须能够施加逻辑。
所以输出应该是:
key1 flag
1 A
2 A
3 B
其中B在平局中被给予更高的优先级。
到目前为止,我的工作主要集中在从我的表中为每个标志事件进行选择,获取计数,然后对结果进行联合,这样我就可以对每个键和标志值对进行计数。从那里,我不确定如何提取每个键的最高出现次数标志,并强加我的优先情况。
感谢您能提供的任何帮助!
发布于 2018-08-02 02:31:39
在统计中,最频繁的值被称为“模式”。以下是计算它的一种方法:
select t.*
from (select key1, flag, count(*) as cnt,
row_number() over (partition by key1 order by count(*) desc) as seqnum
from t
group by key1, flag
) t
where seqnum = 1;
https://stackoverflow.com/questions/51639992
复制相似问题