在工作中常用到的SQL
副标题[/!--empirenews.page--]
这篇文章来记录一下我曾经忘掉的group查询、join查询等一些比较实用/常用的SQL。 本文主打通俗易懂,不涵盖任何优化(适合新手观看) 一、回顾group 查询 group查询就是分组查询,为什么要分组查询?因为我们想按某个维度进行统计。下面来看个图: 现在我的数据如下 比如说,我想知道:每天Java3y这个公众号的点击量是多少。按我们人工而言,思路很简单:把相同的天数以及公众号名称为Java3y的数据找出来,再将每个点击量相加,就得出了结果了。 步骤 用上SQL我们可能会这样写:
1.1 group 查询可能存在的误解 记得有一天,有个群友在群上问了一个问题: 群里边的一个问题 其实他的需求很简单:检索出数据分组后时间最高的记录。但他是这样干的:
示例图: 群里面的一个图 1.2 造成这个误解的可能原因 有的工具可以支持这种的写法:
这种写法没有被禁止,并可以得出结果,比如得到的结果是:
这种写法其实是不合理的,要知道的是:使用group by分组统计之后,我们的select 后面只能跟着group by 的字段,或者是聚合函数。 group by规则 因为,我们对数据进行了分组查询,数据的分布情况,我们是不关心的。 记住:先分组,后统计(先把数据归类后,再对相同的数据进行统计) 1.3 group查询最常用的SQL 去重是我们经常会遇到的问题,打个比方说,由于各种原因(不管是业务上还是说是脏数据),现在我有两条重复的数据(除了ID,其余的字段都是相同的): 重复的数据 我这边只希望留下某一条记录作为查询结果就好了,我们可以写下以下的SQL:
上面这条SQL是非常非常实用的,除了我说的去重以外,其实我们可以再”思考“一下: 上面已经说了,使用group by分组统计之后,我们的select 后面只能跟着group by 的字段,或者是聚合函数。 很多时候我们group by了以后,还想要查询结果中包含group by之外的字段(一般情况下,我们都不可能将group by 涵盖所有的字段),我们就可以上面那样,将查询后的结果作为子查询,放在外部查询的where 子句后,这样外部查询是可以select 出其他字段的。 (SQL写得比较少的朋友可能没什么感触啊,但我希望上面那种写法大家能够记住,以后一定会遇到类似的情况的) 二、回顾join查询 join查询不知道大家在刚学的时候是怎么理解的,反正我当初好像就挺迷迷糊糊的。我觉得join查询可以简单理解成这样:我想要的查询结果,一张表搞不掂,那我就join另一张表 比如说,现在我有两张的表: 第一张表 第二张表 现在我想知道在7月25号时:每个公众号的点击量、公众号名称、号主名称、公众号的创建日期
(编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |