mysql - MySQL Total Friends 找到多个最大值(如果存在)
问题描述
我有一个 MySQL 表,你有朋友列表。
+--------------+-------------+-------------+
| requester_id | accepter_id | accept_date |
+--------------+-------------+-------------+
| 1 | 2 | 2016-06-03 |
| 1 | 3 | 2016-06-08 |
| 2 | 3 | 2016-06-08 |
| 3 | 4 | 2016-06-09 |
| 1 | 5 | 2016-06-09 |
+--------------+-------------+-------------+
如果有多个人的朋友数量最多(在这种情况下,1 和 3 各有 3 个朋友),我如何打印 1 和 3 以及他们的计数。
我有部分可以找到第 N 个最大的人。
select s.requester_id, sum(s.total) as total_friends from (
select requester_id, count(accepter_id) as total from request_accepted
group by requester_id
union
select accepter_id, count(requester_id) as total from request_accepted
group by accepter_id
) as s
group by s.requester_id
order by total_friends desc;
解决方案
我设法想出了这个丑陋但有效的代码。
select s.requester_id, sum(s.total) as total_friends
from
(select requester_id, count(accepter_id) as total
from request_accepted
group by requester_id
union
select accepter_id, count(requester_id) as total
from request_accepted
group by accepter_id) as s
group by s.requester_id
having total_friends = (select max(s2.max_total)
from (select sum(s1.total) as max_total
from (select requester_id, count(accepter_id) as total
from request_accepted
group by requester_id
union
select accepter_id, count(requester_id) as total
from request_accepted
group by accepter_id) as s1
group by s1.requester_id) as s2)
推荐阅读
- ios - 在 LinkedIn iOS 应用程序中共享带有“#”字符的链接时出现问题
- javascript - 我有一个按钮可以切换我网站的主题,如果再次单击以更改回默认主题,如何制作相同的按钮?
- java - 在大型 OWL 文件中使用 Apache Jena 列出类
- gulp - Gulp:复制所有文件但排除一个扩展名
- visual-studio - 在 F# 项目中使用 ** 通配符会导致 Visual Studio 拒绝加载项目
- java - Apache POI:垃圾收集不会释放内存 [Java]
- react-native - 如何从 Play 商店下载链接获取参数
- django - 在共享开发环境中使用 Django、Gunicorn 和 Ngnix 提供静态内容
- javascript - icCube - JavaScript 表达式单元格背景颜色
- sql-server - 对 SQL 表进行分区是否会破坏 3rd 方应用程序