当前位置: 代码迷 >> Oracle开发 >> sql统计查询,该如何解决
  详细解决方案

sql统计查询,该如何解决

热度:84   发布时间:2016-04-24 06:29:11.0
sql统计查询
A表

B表


TransDeviceID是装置编号   DeveiceState是装置状态

怎么查询每个大队下面的单位总数 ,以及单位装置状态相同的单位总数,其中一个单位有多个装置的只要有一个装置状态是0,那么统计该单位时该单位的状态即为0
请大神指点SQL语句该怎么写
------解决思路----------------------
SELECT TT.DEPTNAME, --大队
       COUNT(TT.DEPTID), --大队下单位数
       SUM(TT.DEVEICESTATE), --状态为1的单位数
       COUNT(TT.DEPTID) - SUM(TT.DEVEICESTATE) --状态为0的单位数 = 大队下单位数-状态为1的单位数
  FROM (SELECT AA.DEPTNAME, AA1.DEPTID, MIN(BB.DEVEICESTATE) DEVEICESTATE --存在0的情况则取0,相当于取最小值
          FROM A AA
          JOIN A AA1
            ON AA.DEPTID = AA1.PARENTID
          JOIN B BB
            ON AA1.DEPTID = BB.DEPTID
         WHERE AA.PARENTID = '00010001' --大队的条件
         GROUP BY AA.DEPTNAME, AA1.DEPTID) TT
 GROUP BY TT.DEPTNAME

只是提供思路,具体情况具体分析
  相关解决方案