【发布时间】:2020-11-04 23:45:39
【问题描述】:
我有一个表,其中包含一个数字列和一个属性列,如下所示:
1.
+-----+-----+
| num | att |
-------------
| 1 | a |
| 1 | b |
| 1 | a |
| 2 | a |
| 2 | b |
| 2 | b |
+------------
我想让数字唯一,并且属性是该数字最常出现的属性,就像这样(这是我感兴趣的最终产品):
2.
+-----+-----+
| num | att |
-------------
| 1 | a |
| 2 | b |
+------------
我已经为此工作了一段时间,并设法为自己编写了一个查询,用于查找给定数字的属性出现的次数,如下所示:
3.
+-----+-----+-----+
| num | att |count|
------------------+
| 1 | a | 1 |
| 1 | b | 2 |
| 2 | a | 1 |
| 2 | b | 2 |
+-----------------+
但我想不出只从上表中选择计数最高的那些行(当然对于每个数字)。
所以基本上我要问的是表 3,我如何只选择每个数字计数最高的行(当然,描述提供从表 1 直接到表 2 的方法的答案也可以作为答案:))
【问题讨论】:
标签: sql oracle count greatest-n-per-group window-functions