mysql 查询所有队伍攻击其他队伍最多的前5条 攻击数据很多 200分~

qq_31296243 2017-12-13 11:52:08

表结构:

team 表 team_id , name

answer 攻击表 team_id : 提交者id ,

target_team_id 被攻击者id


要查询所有队伍攻击其他队伍最多的5个队伍. 也就是 队伍1 有5条 ,队伍2有5条....一直到队伍60

例: 队伍1 攻击 队伍2 10次,队伍3 20次,.... 队伍60 10次.

队伍2 攻击 队伍1 20次,...... 队伍60 10次

一共60个队伍, 取每个队伍前5条



...全文
127 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_31296243 2017-12-13
  • 打赏
  • 举报
回复
大家多帮忙~ 我先去吃个饭~
听雨停了 2017-12-13
  • 打赏
  • 举报
回复

create table team(
team_id varchar(20),
name varchar(20)
);
insert into team VALUES('001','火箭队');
insert into team VALUES('002','小花队');
insert into team VALUES('003','先锋队');
insert into team VALUES('004','小牛队');
insert into team VALUES('005','火狼队');
insert into team VALUES('006','笨笨队');
insert into team VALUES('007','野猪队');

create table answer(
team_id varchar(20),
target_team_id varchar(20)
);
insert into answer VALUES('001','002');
insert into answer VALUES('001','003');
insert into answer VALUES('001','003');
insert into answer VALUES('001','004');
insert into answer VALUES('001','004');
insert into answer VALUES('001','005');
insert into answer VALUES('001','005');
insert into answer VALUES('001','006');
insert into answer VALUES('001','006');
insert into answer VALUES('001','006');
insert into answer VALUES('001','007');
insert into answer VALUES('001','007');
insert into answer VALUES('001','007');
insert into answer VALUES('001','007');
insert into answer VALUES('002','001');
insert into answer VALUES('002','003');
insert into answer VALUES('002','003');
insert into answer VALUES('002','004');
insert into answer VALUES('002','004');
insert into answer VALUES('002','005');
insert into answer VALUES('002','005');
insert into answer VALUES('002','006');
insert into answer VALUES('002','006');
insert into answer VALUES('002','006');
insert into answer VALUES('002','007');
insert into answer VALUES('002','007');
insert into answer VALUES('002','007');
insert into answer VALUES('002','007');


#查询分组汇总数据插入表tab_005中
create table Tab_005(
select team_id,target_team_id,count(1) as cnt
from answer
group by team_id,target_team_id
);

#分组取前5的排名
SELECT
*
FROM
tab_005 as a
WHERE
EXISTS (
SELECT
COUNT(1)
FROM
tab_005 b
WHERE
b.team_id = a.team_id
AND b.cnt > a.cnt
HAVING
COUNT(1) < 5
)

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧