sql count用法_sql复杂查询

一.复杂查询语法

f6fdbaf6c28fa92a69fcfce17cf5a467.png

二.sqlzoo错题记录

1. 对于名称以A或B开头的国家,如果其大陆是“Europe”或者“Aisa”,将其替换为“Eurasia”;如果其大陆是“North America”、”South America“、“Caribbean”,将其替换为“America”。显示国家名称、大陆

SELECT name,
       CASE WHEN continent IN ('Europe', 'Asia') THEN 'Eurasia' 
            WHEN continent IN ('North America', 'South America', 'Caribbean') THEN 'America'
            ELSE continent END
/* 在ifs函数中,如果continent in ('Europe','Asia'),那么continent = 'Eurasia'。
在sql中表示式比ifs函数简洁*/
FROM world
WHERE name LIKE 'A%' OR name LIKE 'B%';-- where name like 'A%' or 'B%'不能这样表达

知识点:case when 条件1 then 结果 else 其它结果 end . 要理解这个表达式不难,难处在于它的用法不同于excel中ifs函数。

与它相反,如果是or ,and, 则不能简洁表达。补充一下,其实or与in 可以表达相同的意思。 推荐的表达是使用in,因为or会导致sql进行全表查询,从而使sql运行率下降。

2. 法国、德国、西班牙的总人口是多少

select sum(population)as '总人口' from world
where name in('France','Germany','Spain')
/*这里原本是很简单的,
但需要明确 'in' 的作用,
它可以相当于or,也可以相当于all,对括号中全部数据*/

4.1 对于每一个洲份,显示洲份和至少有1000万人口的国家数目

4.2 列出有至少一亿人口的洲份

-- 4.1
SELECT continent, COUNT(population)  FROM world
WHERE population >= 10000000
GROUP BY continent;


-- 4.2
select continent,count(population) from world
group by continent
having population >= 10000000

注意着重看两者的比较

5. 在每一个洲中找出面积最大的国家,列出洲份、国家名称、面积

select continent,name,area from world x
where area>= all(
select area from world y
where y.continent=x.continent and area>0)

如何理解关联子查询:where y.continent=x.continent,表示按州对数据进行分组,world x表中的每一个area与 world y表中的所有数据进行比较,当world x中的area比world y中的数据所有的数据都大才满足条件。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值