如何按每个组的最高值对组进行排序
How do I order groups by each group's highest value
我有数据:
query url score
a www.google.com 3
a www.facebook.com 2
a www.google.com 1
我想 'group' 按域分类的条目,然后按每个组的最高分对域组进行排序 (desc),这样我得到:
query url score
a www.google.com 3
a www.google.com 1
a www.facebook.com 2
尝试:select * 从 table order by score desc, url asc 不起作用。它给出(无明显变化):
query url score
a www.google.com 3
a www.facebook.com 2
a www.google.com 1
您可以使用 window 函数 - 如果您是 运行 MySQL 8.0:
select *
from mytable
order by max(score) over(partition by url) desc, score desc
在早期版本中,一个选项使用子查询:
select *
from mytable t
order by
(select max(score) from mytable t1 where t1.url = t.url) desc,
score desc
我有数据:
query url score
a www.google.com 3
a www.facebook.com 2
a www.google.com 1
我想 'group' 按域分类的条目,然后按每个组的最高分对域组进行排序 (desc),这样我得到:
query url score
a www.google.com 3
a www.google.com 1
a www.facebook.com 2
尝试:select * 从 table order by score desc, url asc 不起作用。它给出(无明显变化):
query url score
a www.google.com 3
a www.facebook.com 2
a www.google.com 1
您可以使用 window 函数 - 如果您是 运行 MySQL 8.0:
select *
from mytable
order by max(score) over(partition by url) desc, score desc
在早期版本中,一个选项使用子查询:
select *
from mytable t
order by
(select max(score) from mytable t1 where t1.url = t.url) desc,
score desc