我的表格语言包含国家/地区,名称和百分比列。
示例集可能如下所示:
+---------+---------+------------+
| 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。 如果将名称放入组中,则会获得原始表,因为所有国家/地区和名称对都是唯一的。 名称应该是一个特定的值,因为只能有一对国家/地区和最大百分比,所以没有什么比较它,无论如何它都是一个字符串。
我确定这是解决此问题的简单方法,无需执行任何第二个选择语句和连接表格等。
答案 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;