大家都知道在Sql Server中,加条件查询必须要用到group by,而group by也有一个规则:“凡是在group by后面出现的字段,必须同时在select后面出现;凡是在select后面出现的、同时未在聚合函数中出现的字段,必须同时出现在group by后面”
OK,先上我的数据库图
数据库一共6个字段,如果说Type = 1的时候,Amount字段就是有值的,就是为中奖的,反之 Type = 2 的时候,Amount 就是 null,就是没有中奖,称为“再来一次”
如何按时间汇总呢?OK,首先 确认字段,1.日期 2.中奖金额 3.中奖次数 4.再来一次次数
那我们如何把他们汇总查询到这个样子(如图)呢?
大家都知道,统计次数一般用到的聚合函数都是Count,没错,不加条件的时候我也是用Count,如图
没有时间限制查询方法看看运行结果
无时间限制查询结果一般结束这一步,基本上可以满足工作的要求了,但是如果客户要求 把每天日期结算的时间点改成 凌晨5点钟 ,ok,继续加条件查询
注:改成凌晨5点的意思就是:传统上来说,0点是更换日期的一天,所以我们可以多走几个小时,即 DATEADD(HOUR,-5,字段)
上面提到的聚合函数,用Count统计次数,好,我们现在试着用SUM
大家可以看到,我们首先要声明两个变量,而且我们需要在聚合函数里面加上case判断,case大家可以查看一下百度
中奖金额是因为type = 2 的时候有null值,所以也需要加一个case判断
现在看看结果吧
限制时间查询大家可以看到,与上图的结果有点不太一样,大家碰到这样加限制条件的查询,可以试用一下我这样的方法哦,谢谢大家的阅读
网友评论