中国统计网|SQL大厂面试常考知识点 | 新手速进!( 二 )
select*from ( selectidfromtable_1 UNIONALL selectidfromtable_2 )t; union和union all均基于列合并多张表的数据 , 所合并的列格式必须完全一致 。 union的过程中会去重并降低效率 , union all直接追加数据 。 union前后是两段select 语句而非结果集 。
二.最常用
为方便大家理解每个函数的作用 , 先建一个表 , 后面以这个为示例 。
本文插图
1. 去重 distinct-- 罗列不同的id selectdistinctidfromtable_1 -- 统计不同的id的个数 selectcount(distinctid)fromtable_1 -- 优化版本的count distinct selectcount(*)from (selectdistinctidfromtable_1) tbdistinct 会对结果集去重 , 对全部选择字段进行去重 , 并不能针对其中部分字段进行去重 。 使用count distinct进行去重统计会将reducer数量强制限定为1 , 而影响效率 , 因此适合改写为子查询 。
2. 聚合函数和group by-- 统计不同性别(F、M)中 , 不同的id个数 groupbysex -- 其它的聚合函数例如:max/min/avg/sum -- 统计最大/最小/平均年龄 selectmax(age),min(age),avg(age)from table_1 groupbyid聚合函数帮助我们进行基本的数据统计 , 例如计算最大值、最小值、平均值、总数、求和 。
3. 筛选 where/having-- 统计A公司的男女人数 wherecompany ='A' -- 统计各公司的男性平均年龄 , 并且仅保留平均年龄30岁以上的公司 selectcompany,avg(age)fromtable_1 wheresex ='M' groupbycompany havingavg(age)>30;4. 排序 order by-- 按年龄全局倒序排序取最年迈的10个人 selectid,agefromtable_1orderbyageDESC limit 105. case when 条件函数-- 收入区间分组 selectid, (casewhenCAST(salaryasfloat)<50000Then'0-5万' whenCAST(salaryasfloat)>=50000andCAST(salaryasfloat)<100000then'5-10万' whenCAST(salaryasfloat) >=100000andCAST(salaryasfloat)<200000then'10-20万' whenCAST(salaryasfloat)>200000then'20万以上' elseNULLend fromtable_1;case 函数的格式为(case when 条件1 then value1 else null end),其中else 可以省 , 但是end不可以省 。
在这个例子里也穿插了一个CAST的用法 , 它常用于string/int/double型的转换 。
6. 字符串
1)concat( A, B...)返回将A和B按顺序连接在一起的字符串 , 如:concat('foo', 'bar') 返回'foobar' 。selectconcat('www','.iteblog','.com')from iteblog;2)split(str, regex)用于将string类型数据按regex提取 , 分隔后转换为array 。-- 以","为分隔符分割字符串 , 并转化为array Selectsplit("1,2,3",",")asvalue_arrayfromtable_1; -- 结合array index,将原始字符串分割为3列 selectvalue_array[0],value_array[1],value_array[2]from (selectsplit("1,2,3",",")asvalue_arrayfromtable_1 )t3)substr(str,0,len)截取字符串从0位开始的长度为len个字符 。
推荐阅读
- 中年|中国-东盟区块链应用创新实验室揭牌
- IT爆料猿|中国电信6月5G用户数净增779万户,累计3784万
- 2020|影谱科技入选“2020中国AI商业落地价值潜力100强榜单”
- 中国航务周刊|港航业再现跨界收购!
- 招生|有道词典与中国教育在线合作,开通“高考招生”直播服务
- CSDN|由 Apache 说开,中国开源项目已经走向世界!
- AI财经社|谷歌云为何“放弃”中国市场?有人为它算了账,投入产出比太低
- 网速|全球网速排名:中国手机网速世界第三,美国第34
- 驱动中国|国内首次应用!支付宝开放宠物鼻纹识别技术:猫狗都能买保险
- 魅族|2020年BrandZ中国全球化品牌50强新鲜出炉,魅族再上榜,位列34名
