学习目标:
SQL基本函数学习
- [1] Having语句用法
例:查询总人口数至少为3亿的大洲和其平均GDP,其中只有GDP高于200亿且人口数大于6000万或者GDP低于80亿且首都中含有3个a的国家计入计算,最后按国家数从大到小排序,只显示第一行
代码(错误):
select continent ,gdp/population from world
where gdp>20000000000 and population>60000000
or
gdp<80000000000 and name like '%a%a%a%'
group by continent
having sum(population)>=300000000
order by count(name) desc
limit 1
代码(修改后):
select continent ,avg(gdp) 平均GDP from world
where (gdp>20000000000 and population>60000000)
or
(gdp<80000000000 and capital like '%a%a%a%')
group by continent
having sum(population)>=300000000
order by count(name) desc
limit 1
学习笔记:
- 平均GDP可以用聚合函数AVG
- Where引用的多条件查询需要使用括号区分顺序
- SQL运行原理:from–where–group by–having–order by–limit–select
- group by语句相当于为excel建立了数据透视的行标签
- Having语句筛选满足条件的分组
- Order by对筛选后的数据进行排序
- Limit对排序后的数据限制显示的行(Limit(位置偏移量),行数)例如显示20到30行的数据,limit(19,11):19为起始行-1
函数:
- [1] round(x,y) 对x四舍五入保留y位小数;y为负数则保留小数点左边相应的位数为0,如round(15.13,-1)返回10
- [2] concat(s1,…,sn)连接字符串函数,如果其中一参数为null,则返回null,如concat(‘my’,‘SQL’)返回my SQL
- [3] replace(s,s1,s2)用s2代替字符串中所有的s1
- [4] substring(s,n,len)返回字符串s从第n个字符其取长度为len的字符串,n可以为负值,则从倒数第n个字符起取长度为len的字符串,没有len值则取从第n个字符起到最后一位。
- [5] cast(x as type) 数据类型转换函数,type参数可以写char(n) date time datetime decimal等数据类型
- [6] 日期时间函数(类似EXCEL)year\month\day
date_add(date,interval expr type)&date_sub(date,interval expr type)对起始时间进行加减
-[7] datediff(date1,date2)计算两个日期之间间隔的天数
-[8] date_format(date,format)将日期和时间格式化
-[9] case when:1.case value when compare_value then result else; 2.case when condition then result else