mysql分组聚合函数汇总_MySQL 聚合函数和分组

bbc表示是全球国家概况信息

CREATE DATABASE Globe;--

Globe是地球仪的意思不用在意 自己取的名字

USE DATABASE Globe;

CREATE TABLE bbc ( NAME VARCHAR(50) PRIMARY KEY NOT

NULL, -- 国家名称

region VARCHAR(60)

, -- 国家所处地区

AREA DECIMAL(10)

, --

面积

population

DECIMAL(11)

, -- 人口

gdp

DECIMAL(14) --

国民生产总值

) ;

-- 数据太多了就写一条吧

insert into bbc values

('China','Asia-Pacific',9600000,1300000000,1677000000000);

。。。

-- 1. 显示世界人口总和.

SELECT SUM(population) FROM bbc;

-- 2. 列出所有的地区,但每个地区只能显示一次.

SELECT DISTINCT region FROM bbc;

-- 同时也可以使用 GROUP BY 来做这道题。如:

SELECT

region FROM bbc GROUP BY region;

-- 3. 显示GDP超过所有Africa(非洲)国家总和的国家.

SELECT NAME FROM bbc

WHERE gdp>(SELECT SUM(gdp) FROM

bbc WHERE region='Africa')

-- 4. 显示每个地区以及的该地区的国家总数.

SELECT COUNT(NAME) 国家总数,region FROM bbc GROUP BY region;

-- 5.显示每个地区的总人口数和总面积,以总人口来排序。

SELECT SUM(AREA) 总面积, SUM(population) 总人口数 FROM bbc GROUP BY

region

ORDER BY SUM(population)

总人口数;

-- 6.

显示每个地区以及的该地区国家总人口数不少于1000万的国家总数.

SELECT region,COUNT(NAME)

FROM bbc GROUP BY region HAVING

SUM(population)>=10000000;

-- 7.列出人口总数不少于1亿的地区.

SELECT region FROM bbc GROUP BY region HAVING

SUM(population)>=100000000;

-- 8.显示欧洲的人口总数和总GDP.

SELECT

SUM(population),SUM(gdp) FROM bbc WHERE region='Europe' ;

--

9.显示每个地区的总人口数和总面积.以总人口来排序.仅显示那些面积超过1000000的地

SELECT

region,SUM(population),SUM(AREA) FROM bbc

GROUP

BY region HAVING SUM(AREA)>1000000 ORDER BY

SUM(population) DESC;

nobel(诺贝尔)表是诺贝尔奖基本信息

create database Explosives;-- Explosives是炸药的意思 诺贝尔和炸药有关嘛 自己随便取

use Explosives;

create

table nobel(

yr

int, -- 得奖年份

Subject

varchar(15), -- 奖项

winner varchar(50) -- 获奖人

);

-- 数据也有点多 不方便一一打出来 以一条为例

insert into nobel values

(2005,'Physics','Theodor W. H?¤ch');-- 获奖人名字有奇怪的没事 不影响

。。。

-- 1.给出诺贝尔获奖总人数

SELECT COUNT(winner) FROM nobel;

-- 2.给出诺贝尔物理奖(Physics)的获奖总次数

SELECT COUNT(SUBJECT) FROM nobel WHERE SUBJECT='Physics';

-- 3.显示每个奖项的获奖总次数

SELECT SUBJECT,COUNT(SUBJECT) FROM nobel GROUP BY

SUBJECT;

-- 4.显示每个奖项第一次获得该奖的年份

SELECT SUBJECT,MIN(yr) FROM nobel GROUP BY

SUBJECT;

-- 5.显示每个奖项在2000年获奖的人数

SELECT SUBJECT,COUNT(winner) FROM

nobel WHERE yr=2000 GROUP BY SUBJECT

-- 6.显示每个奖项不同获奖者的人数

SELECT

SUBJECT,COUNT(DISTINCT winner) FROM nobel GROUP BY

SUBJECT;

-- 7.显示每个奖项有多少年获奖

SELECT SUBJECT,COUNT(DISTINCT yr) FROM nobel GROUP BY

SUBJECT;

-- 8.显示当年有三个物理奖(Physics)的年份

SELECT yr,COUNT(winner) FROM nobel WHERE SUBJECT='Physics'

GROUP BY yr HAVING COUNT(winner)=3;

-- 9.显示得奖超过一次的获奖者

SELECT winner FROM nobel GROUP BY winner HAVING

COUNT(SUBJECT)>1;

-- 10.显示得到多个奖项的获奖者

SELECT winner FROM nobel GROUP BY winner HAVING COUNT(DISTINCT

SUBJECT)>1;

--

11.显示2000年及以后,有三个人获得同一奖项的年份以及奖项

SELECT yr,SUBJECT FROM

nobel WHERE yr>=2000 GROUP BY yr,SUBJECT HAVING

COUNT(winner)=3;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值