sql 在最后一行加上统计结果
**背景:**很多人在实际的sql查询中可能会遇到这种需求,那就是在查询的最后一行像excel里的求和一样加上统计的结果。
**分析:**遇到这种需求该怎么区实现呢,其实有两种方法,一、写两个sql语句,然后用union连接在一起达到我们想要的结果形式如下:
(select ID,数值 from 表 )
union
(select 0 as ID,sum(数值) as 总和 from 表)
那我们这里来说第二种方式:
使用rollup关键字
具体使用方法和说明这里解释的很清楚,我就不再重复造轮子了,看不懂英文的可以用谷歌的翻译功能,很好用。
另外,再记录一下一个sql中经常用到的方法。
这是初步的查询结果,我现在想要的结果是先对查询结果进行分组,然后统计类型这个字段中不同值出现的次数。
先说一下我的错误的做法:
我刚开始的做法是常规操作,group by时间来分组,然后用count函数来统计,结果是我太天真了,生成的结果是如下:
问题就出来了,无论我统计哪种类型,统计结果都是一样的,很显然这是不对的。
接下来说一下解决问题的方法:
这里是先用case when 将各种类型变成1,其他的类型或者不存在的(null)就变成0,然后求和(sum)
最终也是如愿得到了我们想要的结果。
记录这个问题的目的其实只是为了在遇到这种需求的时候能够第一时间知道该怎么去解决,如果思路不对可能会浪费很多的时间和精力,当然,如果大家都没遇到这种情况或者大家都很厉害,那就可以直接略过这篇文章了。
另外,如果大家有更好的方法,希望能够留言指教一下,非常感谢!
sql 在最后一行加上统计结果
**背景:**很多人在实际的sql查询中可能会遇到这种需求,那就是在查询的最后一行像excel里的求和一样加上统计的结果。
**分析:**遇到这种需求该怎么区实现呢,其实有两种方法,一、写两个sql语句,然后用union连接在一起达到我们想要的结果形式如下:
(select ID,数值 from 表 )
union
(select 0 as ID,sum(数值) as 总和 from 表)
那我们这里来说第二种方式:
使用rollup关键字
具体使用方法和说明这里解释的很清楚,我就不再重复造轮子了,看不懂英文的可以用谷歌的翻译功能,很好用。
另外,再记录一下一个sql中经常用到的方法。
这是初步的查询结果,我现在想要的结果是先对查询结果进行分组,然后统计类型这个字段中不同值出现的次数。
先说一下我的错误的做法:
我刚开始的做法是常规操作,group by时间来分组,然后用count函数来统计,结果是我太天真了,生成的结果是如下:
问题就出来了,无论我统计哪种类型,统计结果都是一样的,很显然这是不对的。
接下来说一下解决问题的方法:
这里是先用case when 将各种类型变成1,其他的类型或者不存在的(null)就变成0,然后求和(sum)
最终也是如愿得到了我们想要的结果。
记录这个问题的目的其实只是为了在遇到这种需求的时候能够第一时间知道该怎么去解决,如果思路不对可能会浪费很多的时间和精力,当然,如果大家都没遇到这种情况或者大家都很厉害,那就可以直接略过这篇文章了。
另外,如果大家有更好的方法,希望能够留言指教一下,非常感谢!
发布评论