SQLZOO:SUM and COUNT

数据表:world

namecontinentareapopulationgdp
AfghanistanAsia6522302550010020343000000
AlbaniaEurope28748283174112960000000
AlgeriaAfrica238174137100000188681000000
AndorraEurope468781153712000000
AngolaAfrica124670020609294100990000000
...

Q1 Total world population

Show the total population of the world.

SELECT SUM(population) FROM world

Q2 List of continents

List all the continents - just once each.

SELECT DISTINCT continent FROM world
去掉重复记录 DISTINCT

DISTINCT:过滤掉多余的重复记录只保留一条,但往往用它来返回不重复记录的条数

1.作用于单列

select distinct name from A  ##根据name去重

2.作用于多列

select distinct name, id from A  ##根据name+id两个字段来去重

select distinct xing, ming from B  ##并非对xing和ming两列字符串拼接后再去重,而是分别作用于xing和ming列

3.COUNT+DISTINCT

select count(distinct name) from A	  --name去重后的数目

count使用嵌套查询统计多字段

select count(*) from (select distinct xing, name from B) AS M

Q3 GDP of Africa

Give the total GDP of Africa

SELECT SUM(gdp) FROM world 
WHERE continent='Africa'

Q4 Count the big countries

How many countries have an area of at least 1000000

SELECT COUNT(name) FROM world 
WHERE area>=1000000

Q5 Baltic states population

What is the total population of ('Estonia', 'Latvia', 'Lithuania')

SELECT SUM(population) FROM world 
WHERE name IN ('Estonia', 'Latvia', 'Lithuania')

Q6 Counting the countries of each continent

For each continent show the continent and number of countries.

SELECT continent,COUNT(name) FROM world 
GROUP BY continent

GROUP BY

GROUP BY 根据一个或多个列对结果集进行分组

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name

Q7 Counting big countries in each continent

For each continent show the continent and number of countries with populations of at least 10 million.

SELECT continent,COUNT(name) FROM world 
WHERE population>=10000000 
GROUP BY continent

Q8 Counting big continents

List the continents that have a total population of at least 100 million.

SELECT continent FROM world 
GROUP BY continent 
HAVING SUM(population)>=100000000
HAVING 

WHERE子句在聚合前先筛选记录,作用在GROUP BY 子句和HAVING子句前
HAVING子句在聚合后对组记录进行筛选

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING aggregate_function(column_name) operator value
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值