今天碰到一个比较有疑惑的问题,就是在统计和的时候,我们往往有时候查不到数据,都会再加个 nvl(sum(字段),0) 来显示这个字段,但是如果我们再加个group by ,就算有加入这个 nvl(null,0) 的这个函数,也查不到一条数据的疑惑进行解释如下:
1 首先我们查下这个语句:是查不到一条数据的如下图:
select a.area_code,  a.calltimes,a.queuetimes 
    from ngcc_log.t_rpt_call4traffic_xm a
     where a.flowid=12


2 然后我们再加个函数来sum 下,然后再加个nvl,这样是查得出数据的,也就是说,为空的我们显示为 0
select  nvl(sum(l.calltimes),0)calltimes,nvl(sum(l.queuetimes),0)queuetimes
 from ( select a.area_code, 
    a.calltimes,a.queuetimes 
    from ngcc_log.t_rpt_call4traffic_xm a
     where a.flowid=12)

3 然后我们再来group  by 下 一个常亮,或者伪列,或者含有的字段:
1. group  by  已有的字段

2。group  by  伪列 

我们可以看到都是为空的,也就是查不到数据了。
这是为啥: 首先这里我们要清楚SQL解析的顺序  其次你要知道伪列的作用。
我们这里来举例一个简单点列子:
 比如说这是一张表 :

 select sum(v_value) from wtf group by '50'  就相当于:
select sum(v_value) from (select v_value, '50' from wtf) group by '50';

所以这边sql 是先解析成  select v_value, '50' from wtf

 '50'是生成的一个伪列 
 '50'是一个groupId   sum(v_value)是一个值 
 你不加group by '50' 相当于sum全表的数  如果有where1=2 就是sum出来的空 
 加group by ‘50’就是按'50'group by没有记录 就是没有记录 
 

最新文章

  1. Angular 结合RequireJs实现模块化开发
  2. RPC原理详解
  3. C#微信开发-微信JS-SDK(1)之通过config接口注入权限验证配置
  4. NoSQL数据库的分布式模型
  5. vmware 连网
  6. 优化移动体验的HTML5技巧
  7. 同一个ASP.NET页面放置多个UpdatePanel分别刷新的解决办法。.
  8. excel转化为Json
  9. PHP 常识
  10. linux系统最常用命令(持续更新)
  11. 028 kafka面试小节
  12. mysql 取名会涉及到关键字 的问题
  13. DataTable插件报错:Uncaught TypeError: Cannot read property 'style' of undefined
  14. MVC中返回json数据的两种方式
  15. ROC曲线,AUC面积
  16. linux的越墙方法
  17. Spring AMQP 源码分析 03 - MessageConverter
  18. Spring boot 使用的注解有哪些?
  19. python中del函数的垃圾回收
  20. Scala_标识符

热门文章

  1. Spring自定义标签的实现
  2. 提升Scrapy框架爬取数据效率的五种方式
  3. 目标检测之车辆行人(darknet版yolov3)
  4. raise与raise······from
  5. 访问kubernetes api
  6. javascript基本语法点
  7. codeforces Educational Codeforces Round 65 (补完)
  8. git 学习使用记录
  9. IDEA部署Tomcat报错:No artifacts marked for deployment
  10. openssh的服务端配置文件