码迷,mamicode.com
首页 > 其他好文 > 详细

sum(case when ct.tradeTotal >= 0 then 1 else 0 end)的意思

时间:2018-09-01 12:27:22      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:like   trade   hql   ade   end   rom   esc   ase   new   

 

String hql = "select new com.ks.admin.report.dto.ReportMonthWithDrawalDto(" +
				"count(*)," +
				"sum(ct.tradeTotal)," +
				"sum(case when ct.tradeTotal >= 0 then 1 else 0 end)," +
				"sum(case when ct.tradeTotal >= 0 then ct.tradeTotal else 0 end)" +
				") " +
				"from CustTrade ct " +
				"where ct.tradeType = ‘DR‘ " +
				"and ct.tradeTime between ? and ? " +
				"and ct.tradeDesc like ‘%提现%‘";

count(*)返回的是Long类型,Sum(Double类型)返回Double类型, sum(case when ct.tradeTotal >= ? then ct.1 else 0 end) 返回Long类型。

 

sum(case when ct.tradeTotal >= 0 then 1 else 0 end)的意思是当ct.tradeTotal>=0的时候会返回1,否则返回0,而sum会累加,因为0累加之后还是0,所以只会返回1的累加之后才会改变值,因此这表示统计ct.tradeTotal>=0的数据总数。为什么不用count呢?因为试验过,count里面无法用条件。

sum(case when ct.tradeTotal >= 0 then ct.tradeTotal else 0 end)的意思是当ct.tradeTotal>=0的时候返回ct.tradeTotal的值,否则返回0,同理,如果条件成立,会累加ct.tradeTotal>=0的值。

 

如果以上描述有错误,请提出,一起共同学习。

sum(case when ct.tradeTotal >= 0 then 1 else 0 end)的意思

标签:like   trade   hql   ade   end   rom   esc   ase   new   

原文地址:https://www.cnblogs.com/363747320wxb-qihe/p/9569073.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!