sql 去重求和_[数库练习]丧病刷SQL·sqlzoo笔记四篇

9be46eaf4dcf5eb452e3a6944b092c57.png

点进本篇并阅读你可以收获:

  • [sql在线练习平台 sqlzoo]
  • [基础sql查询命令]
  • [数据select的常见统计函数]

opening

经过前三篇的刷题洗礼,大部分同学应该对常规查询语句比较熟了如果觉得第三篇难度有点跟不上而畏惧第四篇,其实duck不必担心。因为本篇难度跳水了,准确的说sqlzoo的第四个单元难度跳水了

所以第一点要说的就是面对学习资源,

不要畏惧。

有的时候 还没看什么遇到学的问题,

畏惧就让人止步不前了。

这当然是不行的,要走进去,打开直面它

比恐惧失败畏惧新事物更可怕的是恐惧畏惧这种心理本身。

这种心理会直接干涉阻止你,

而你要做的就是破开畏惧,拿出胆魄来开路!

Practice

1.

Show the total population of the world.

展示全世界人口数总和

select sum(population) 
from world

掌握sum()用法,轻松拿下

2.

List all the continents - just once each.

列出 全部洲名称

select distinct continent 
from world

这题思路:把洲字段(continent)去重输出,拿下

3.

Give the total GDP of Africa

给出全非洲GDP

select sum(gdp) from world
where continent ='Africa'

这题思路 求和函数sum(),然后where 条件 锁定非洲,拿下

4.

How many countries have an area of at least 1000000

有多少国家 领土面积 至少1000000

“至少”这个逻辑简而言之不过是:

条件:至少x=条件:大于x,

select count(name) from world
where area > 1000000

嗯 其实“有多少”这三个字还是容易看成直接输出列表

我翻得不太恰当

他问的是“how many”,有几个国家

5.

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

输出括号内三个国家全部人口('Estonia', 'Latvia', 'Lithuania')

select sum(population) from world
where 
name = 'Estonia' or
name = 'Latvia' or
name = 'Lithuania' 

这题思路 人口求和,架子如上

要三个国家在条件与或输出 ,总之拿下

如果没明白用or而不是and,可以琢磨一下这段:

比如我这么写

select name,population from world
where 
name = 'Estonia' or
name = 'Latvia' or
name = 'Lithuania' 

可以得到三个国家人口,然后select sum(population)即可

如果还问为什么不写and 你可以自己把or换成and,

没有 国家的既是 'Estonia' 且是 'Latvia' 还且是 'Lithuania'

想一想 以前数学教的 交集 、并集,物理的串联、并联

and 是交集,就是且。
or是并集,就是或。

6.

For each continent show the continent and number of countries.

每一个洲 展示国家的洲属和 number

没明白这个number 是啥,有这编号字段?

select * from world

也没number这个呀

看了一眼 show what answer

哦,懂了,

重新翻译一下:

这题 要展示 每个洲 count国家数

select continent,count(name) from world
group by continent

这题思路, 就按洲分组,输出continent和count(name)

7.

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

这题思路,就是分组 (上题写了分组思路),条件人口

要注意 的可能就是 where 条件写在 group by分组前,

有机会的话,语句执行顺序,语句优化,存储调用过程

这些在刷题文章完结后,有时间贴一下sql的个人优化的思路想法。

8.

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

列出 哪些洲,有全部人口至少 额...100 million 100 百万?

哦,懂了,我重新翻译一遍:

列出哪些洲 的全部人口 大于 1亿

select continent from world
where population > 100000000
group by continent 

额,好像不太对,没弹笑脸

看了眼show anwser,我的结果好像少了一个Europe

应该是欧洲人口总和大于一亿的,

回头看我上面的代码发现是逻辑有问题,

我写的逻辑意思是在写各州哪个国大于1亿而非题目的各州人口总和大于1亿

重新写一条

select continent,cs.scp from 
(select continent,sum(population) as scp from world
group by continent) as cs
where cs.scp >100000000
Wrong answer. Too many columns

wrong answer 没关系,我主要就是看输出结果

d9d40cc8aff96d1af707b75490ce5018.png

就是多了一列,把select后面的cs.scp删掉就可以输出正确列表结果了

select continent,cs.scp from 
(select continent,sum(population) as scp from world
group by continent) as cs
where cs.scp >100000000

这题加了一个子查询,不熟的同学可能这题相比前7题,8题算是加了些难度。

子查询我在丧病刷SQL3篇内容提到了语法和例子,

本篇就不多赘述。下面是往期文章方便链接进入复习

Previous articles

Crow·Lu:[数库练习]丧病刷SQL·sqlzoo笔记三篇(上)

Crow·Lu:[数库练习]丧病刷SQL·sqlzoo笔记三篇(下)

Crow·Lu:[数库练习]丧病刷SQL·sqlzoo笔记二篇

Crow·Lu:[数库练习]丧病刷SQL·sqlzoo笔记一篇

Thanks

关于本篇"丧病刷SQL",

其实目前我写数据文章还有很多不足,

在这里提前感谢未来的读者提供勘误。

勘误校正:

可以在下面的评论区指出或者直接知乎私信留言。

在此提前谢谢未来勘误的朋友啦~

最后感谢:@Rocky0429

感谢你文章分享的sqlzoo,

Rocky0429:在线就能用的 SQL 练习平台我给你找好了!

真的是很好玩很好用好练习的网站,再次感谢!

Epilogue

其实写到这里还是有别的话想说,

虽然一篇就写过了:

刷题的各位有没有想过自己刷题的意义是什么?

[自己要走的路]要靠自己的意志来决定
—— Bruno Bucciarati 《JoJo's Bizarre Adventure》

我的答案是,为了更接近并实现自己的梦想。

Ending

希望看文章看到最后的朋友都能给予

点赞,喜欢,收藏,转发支持,

上述支持对应收到以下祝福:

跳槽、加薪、转行、晋升成功。

那么,本篇充满力度的

[数库练习]丧病刷SQL·sqlzoo笔记四篇

题例‘sum and count’全8题

完~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值