SQL要求聚合函数优于奇异值

时间:2016-01-10 03:29:51

标签: sql group-by db2 aggregate-functions

我的表格语言包含国家/地区,名称和百分比列。

示例集可能如下所示:

+---------+---------+------------+
| country |  name   | percentage |
+---------+---------+------------+
| usa     | english |         85 |
| usa     | spanish |         10 |
| usa     | german  |          5 |
| germany | german  |        100 |
+---------+---------+------------+
I want to get
+---------+---------+------------+
| country |  name   | percentage |
+---------+---------+------------+
| usa     | english |         85 |
| germany | german  |        100 |
+---------+---------+------------+

select country, name, max(percentage) from language group by country

告诉我,我需要将除了一列之外的所有列放入聚合函数或group by。 如果将名称放入组中,则会获得原始表,因为所有国家/地区和名称对都是唯一的。 名称应该是一个特定的值,因为只能有一对国家/地区和最大百分比,所以没有什么比较它,无论如何它都是一个字符串。

我确定这是解决此问题的简单方法,无需执行任何第二个选择语句和连接表格等。

1 个答案:

答案 0 :(得分:0)

如果您想要最大百分比,请使用row_number()

select l.*
from (select l.*,
             row_number() over (partition by country order by percentage desc) as seqnum
      from language l
     ) l
where seqnum = 1;