SQL用了两年多,分享2个最常用的小技巧
导读:SQL是所有数据从业者必须打牢的基本功之一,扎实的SQL查询和适当的调优技巧是检验SQL能力的两大重要准则。个人曾经专门花费过好多时间用于提升SQL能力,期间也刷了大量的SQL题目,在这期间也不断摸索总结了一些小技巧,今天本文就来分享其中的两个,也差不多是日常使用中最为高频的两个了。
示例学生成绩表
SQL的数据类型隐式转换
利用这一小技巧,在实现很多统计指标时就可以有很多小技巧。例如计算学生成绩表中每名学生的成绩的优秀率,即成绩在90分以上的科目与本人总科目的占比。为实现这一查询,常规的操作是分别统计每名学生成绩在90分以上的科目数量和总科目,然后进行相除得到占比。
其中,在每名学生的分组中,条件判断score>=90返回一组0或1的结果,对这组0/1取值进行求均值操作,即等价于求成绩>=90的科目占比。
巧妙运用if函数和null
SQL内置了众多函数,但对于一名程序员而言if函数应该尤为常见和常用;另一方面,null值也是SQL中一个神奇的存在,它有两大特性:一是任何值与null的任何计算都会得到null值;二是在任何聚合函数中,null值都不参与计算(例如,count计数就是查找null以外的结果数量)。配合使用if函数和null值,有时也可实现很好的效果。
实际上,上述查询语句中,首先通过if函数衍生一个临时字段if(score>=80, score, null)其取值为:成绩≥80时取成绩值,否则置为null,即相当于仅保留了成绩在80分以上的记录;而后嵌套一层avg函数即直接实现了计算80分以上平均值的效果。
当然,对于这一需求也可以先用where条件过滤出成绩在80分以上的记录后再聚合统计。
☞小米豪派“大红包”,人均 39 万元;约 200 家美国企业遭遇 REvil 勒索软件攻击;滴滴回应App被下架|极客头条
[广告]赞助链接:
关注数据与安全,洞悉企业级服务市场:https://www.ijiandao.com/
让资讯触达的更精准有趣:https://www.0xu.cn/
随时掌握互联网精彩
- 这 11 种编程语言,还“活着”吗?
- 我用 Rust 重写网站,性能居然提升了 18 倍!
- 详解 SSL(三):SSL 证书该如何选择?
- 《安卓高级研修班》2021冬季12月班火热招生中!
- 三款旗舰并发:魅族18s、18s Pro 、18X发布
- 四年磨一剑:我是如何拿到蚂蚁 Offer 的?
- 速来!世界冠军喊你一起体验5G峰速!
- 高朋满座话未来|专访OPPO创始人兼首席执行官陈明永
- 送给Web安全初学者的免费教程,你不来看看吗?
- P6+架构技术揭秘:Redis+Nginx+Dubbo精选+面试题+架构师精选视频(送)
- 从0开始CTF-PWN(四)ROP绕过栈可执行保护与GOT表劫持
- 仅剩一周!!CSDN年终大放血!人人有份的大奖你确定不来?