天天看點

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;