JVM*_*VMX 5 mysql count distinct
我有两个表,一个是团队的,一个是玩家的,我想找出的是总人数表,换句话说,我想统计拥有2个成员的团队总数,即所有团队的总数有3个成员等等
这是数据库结构。
(侧边栏问题:我在这里是个新手:是否有更好的方法发布SQL?)
CREATE TABLE `formsfiles`.`Teams` (
`ID` INT NOT NULL AUTO_INCREMENT ,
`Name` VARCHAR(45) NULL ,
PRIMARY KEY (`ID`) );
INSERT INTO `Teams` (`Name`) VALUES ('Sharks');
INSERT INTO `Teams` (`Name`) VALUES ('Jets');
INSERT INTO `Teams` (`Name`) VALUES ('Fish');
INSERT INTO `Teams` (`Name`) VALUES ('Dodgers');
CREATE TABLE `Players` (
`ID` INT NOT NULL AUTO_INCREMENT ,
`Name` VARCHAR(45) NULL ,
`Team_ID` INT NULL ,
PRIMARY KEY (`ID`) );
INSERT INTO `Players` (`Name`, `Team_ID`) VALUES ('Jim', '1');
INSERT INTO `Players` (`Name`, `Team_ID`) VALUES ('Tom', '1');
INSERT INTO `Players` (`Name`, `Team_ID`) VALUES ('Harry', '2');
INSERT INTO `Players` (`Name`, `Team_ID`) VALUES ('Dave', '2');
INSERT INTO `Players` (`Name`, `Team_ID`) VALUES ('Tim', '3');
INSERT INTO `Players` (`Name`, `Team_ID`) VALUES ('Trey', '4');
INSERT INTO `Players` (`Name`, `Team_ID`) VALUES ('Jay', '4');
INSERT INTO `Players` (`Name`, `Team_ID`) VALUES ('Steve', '4');
INSERT INTO `Players` (`Name`, `Team_ID`) VALUES ('Chris', '4');
Run Code Online (Sandbox Code Playgroud)
我想要的是团队人数。
我想看下面的输出
Team_Size Count
1 1
2 2
4 1
Run Code Online (Sandbox Code Playgroud)
小智 3
最简单的方法可能是:
select team_count, count(*) from
(select count(*) team_count from players group by team_id) sq
group by team_count
Run Code Online (Sandbox Code Playgroud)
(尽管这不包括没有球员的球队。)
SQLFiddle在这里。