`
zjx2388
  • 浏览: 1333804 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

oracle case when 复杂统计SQL

 
阅读更多

select substr(unitcode,0,6),
count(*),
--01--
sum(case substr(jqxzcode,0,4) when '0105' then 1 else 0 end) as sharen,
sum(case substr(jqxzcode,0,4) when '0109' then 1 else 0 end) as qiangjie,
sum(case substr(jqxzcode,0,4) when '0112' then 1 else 0 end) as qiangduo,
sum(case substr(jqxzcode,0,4) when '0110' then 1 else 0 end) as daoqie,
sum(case substr(jqxzcode,0,4) when '0114' then 1 else 0 end) as dubo,
sum(case when(jqxzcode like '01%' and jqxzcode not like '0105%' and jqxzcode not like '0109%' and jqxzcode not like '0112%' and jqxzcode not like '0110%' and jqxzcode not like '0114%') then 1 else 0 end) as qita1,
--02--
sum(case substr(jqxzcode,0,6) when '020108' then 1 else 0 end) as douou,
sum(case substr(jqxzcode,0,4) when '0207' then 1 else 0 end) as qiaozha,
sum(case when (jqxzcode like '02%' and jqxzcode not like '020108%' and jqxzcode not like '0207%') then 1 else 0 end) as qita2,
--qt--
sum(case substr(jqxzcode,0,2) when '08' then 1 else 0 end) as jiufen,
sum(case substr(jqxzcode,0,2) when '05' then 1 else 0 end) as qiuzhu,
sum(case substr(jqxzcode,0,4) when '0602' then 1 when '0603' then 1 else 0 end) as qiuzhu,
sum(case substr(jqxzcode,0,4) when '0601' then 1 else 0 end) as xiansuojubao,
sum(case substr(jqxzcode,0,2) when '03' then 1 else 0 end) as jiaotongshigu,
sum(case substr(jqxzcode,0,2) when '09' then 1 else 0 end) as shehuiliandong,
sum(case substr(jqxzcode,0,2) when '04' then 1 else 0 end) as huozhai,
sum(case when (jqxzcode like '%' and jqxzcode not like '01%' and jqxzcode not like '02%' and jqxzcode not like '03%' and jqxzcode not like '04%' and jqxzcode not like '05%' and jqxzcode not like '0601%' and jqxzcode not like '0602%' and jqxzcode not like '0603%' and jqxzcode not like '08%' and jqxzcode not like '09%' )then 1 else 0 end) as qita3
from jqfxk j
where
j.bjtime>to_date('2015-07-25 16:00:00','yyyy-mm-dd hh24:mi:ss')
 and
j.bjtime<to_date('2015-08-25 16:00:00','yyyy-mm-dd hh24:mi:ss')
 and
jqxzcode is not null and
unitcode in ('431100000000','431103000000','431102000000','431122000000','431121000000','431123000000','431129000000','431124000000','431128000000','431126000000','431129000000')
group by substr(unitcode,0,6)

 

以上SQL生成一个下面的表格统计数据:

横栏是unitcode单位

横栏是jqxzcode

 

 

 

select bzdwcode, jqtime,
       sum(cnt) as cnt,   ---日合计
       sum(num0) as num0, --其他类合计
       sum(num1) as num1, --抢  劫010501 总数
       sum(num2) as num2, --抢 持枪
       sum(num3) as num3, --抢 室外 摩托
        sum(num3) as num4,--抢 室外 汽车
         sum(num3) as num5,--抢 室外 财物
          sum(num3) as num6,--抢 入室 财物
           sum(num3) as num7,--抢夺 总数
            sum(num3) as num8,--抢夺  飞车
             sum(num3) as num9,--抢夺  非 飞车
              sum(num3) as num10, -- 盗 总数
              sum(num3) as num11, --盗 室外 摩托
              sum(num3) as num12,--盗 室外 汽车
              sum(num3) as num13,---盗 室外 财物
              sum(num3) as num14---盗 入室 财物
      from (
  select  substr(jqtime,1,10)  jqtime,
          case when substr(bzdwcode,1,6) not like '445221%' and
              substr(bzdwcode,1,6) not like '445222%' and 
              substr(bzdwcode,1,6) not like '445224%' and 
              substr(bzdwcode,1,6) not like '445281%' then '445200' else substr(bzdwcode,1,6) end  bzdwcode,
count(*) as cnt,
sum(case when (bzjqxzdm like '01%' or bzjqxzdm like '0414%')
     and bzjqxzdm not like '010501%' and bzjqxzdm not like '010504%' and bzjqxzdm not like '010502%' then 1 else 0 end) num0,
      
sum(case when bzjqxzdm like '010501%' then 1 else 0 end ) num1,
sum(case when bzjqxzdm like '01050150%' or bzjqxzdm like '01050160%'
or bzjqxzdm like '0105016A%' or bzjqxzdm like '0105016B%' then 1 else 0 end ) num2,
sum(case when bzjqxzdm like '0105012A%' then 1 else 0 end ) num3,
sum(case when bzjqxzdm like '0105012B%' or bzjqxzdm like '01050120%'  then 1 else 0 end ) num4,
sum(case when bzjqxzdm like '01050102%' then 1 else 0 end ) num5,
sum(case when bzjqxzdm like '01050101%' then 1 else 0 end ) num6,
 
sum(case when bzjqxzdm like '010504%' then 1 else 0 end) num7,
sum(case when bzjqxzdm like '01050401%' then 1 else 0 end) num8,
sum(case when bzjqxzdm like '010504%' and bzjqxzdm not like '01050401%' then 1 else 0 end) num9,
sum(case when bzjqxzdm like '010502%' then 1 else 0 end) num10,
sum(case when bzjqxzdm like '01050224%' then 1 else 0 end) num11,
sum(case when bzjqxzdm like '01050223%' then 1 else 0 end) num12,
sum(case when bzjqxzdm like '01050240%' then 1 else 0 end) num13,
sum(case when bzjqxzdm like '01050201%' then 1 else 0 end) num14
 from
 JQCASE t where  substr(bzdwcode,1,6) <> '445221' and  substr(bzdwcode,1,6) <> '445224' and  substr(bzdwcode,1,6) <> '445222' and  substr(bzdwcode,1,6) <> '445281' --and jqtime >=? and jqtime <=?
 group by substr(bzdwcode,1,6), substr(jqtime,1,10) )  a
 group by bzdwcode,jqtime order by jqtime, bzdwcode

  • 大小: 18.4 KB
分享到:
评论

相关推荐

    oracle where case when where后面跟case when

    总之,`WHERE CASE WHEN`的组合在Oracle SQL中是一个强大的工具,它允许我们根据复杂逻辑进行数据筛选,灵活适应各种查询需求。理解并熟练掌握这一技巧对于数据库管理员和开发者来说至关重要,可以帮助他们在处理...

    casewhen多条件oracle-casewhen(casewhen同时满足多条件).pdf

    CASE WHEN 语句在 Oracle 数据库中是非常常用的,特别是在复杂的查询和统计中。它可以帮助我们实现多个条件的判断和执行,提高查询效率和读取性。 在 Oracle 数据库中,CASE WHEN 语句可以分为两种格式:简单 Case ...

    Oracle_case_when_用法

    在 Oracle 数据库中,`CASE WHEN` 表达式提供了一种在 SQL 查询中实现条件判断的方法,这使得开发人员能够在不使用 PL/SQL 的情况下编写更为灵活和复杂的查询语句。`CASE WHEN` 与 `DECODE()` 函数相似,但因其符合 ...

    oracle case when 语句的用法详解

    Oracle的CASE WHEN语句是SQL查询中的一个非常重要的条件判断工具,它允许你在单个查询中根据不同的条件执行不同的操作。CASE WHEN语句有两种主要形式:简单CASE和搜索CASE。 **1. 简单CASE函数** 简单CASE主要用于...

    oracle case语句的介绍

    ### Oracle CASE 语句介绍及应用案例 #### 一、Oracle CASE 语句...无论是数据转换还是复杂的统计需求,CASE 语句都能提供有效的解决方案。在实际工作中,合理运用 CASE 语句能够极大地提高 SQL 查询的能力和效率。

    oracle系列教程三+oracle复杂SQL语句.doc

    本文将深入探讨Oracle中的复杂SQL语句,包括查询优化、索引、函数的使用以及如何进行行列转换和去重操作。 首先,了解SQL语句的执行顺序至关重要。在一般的查询中,如`SELECT`、`FROM`、`WHERE`,执行顺序为:先...

    case乱码解决

    mysql 中case when 遇到乱码解决。查询语句中含有case引起中文乱码解决方法

    ORACLE多条件统计查询的简单方法

    在Oracle数据库中,进行多条件统计查询是一项常见的任务,尤其在复杂的业务场景下,需要对多张表的数据进行综合分析。传统的做法可能涉及到大量的UNION和IF语句,但这不仅可能导致代码冗长,还可能影响查询效率。在...

    使用Oracle的SQL函数实现工作日和节假日分组统计.pdf

    使用Oracle的SQL函数实现工作日和节假日分组统计 本文介绍了使用Oracle的SQL函数来实现工作日和节假日的分组统计,通过对工作日和节假日的判断和统计,可以更好地合理调度人力物力资源,制定节假日劳务补贴政策。...

    oracle到sqlserver存储过程语法转换

    ### Oracle到SQL Server存储过程语法转换详解 在数据库迁移项目中,从Oracle迁移到SQL Server是一种常见的场景。本文旨在提供一份详细的指南,帮助开发者更好地理解这两种数据库系统在存储过程方面的语法差异,并...

    Oracle sql文总结(case when,查看执行计画,文本操作,查看锁表及解锁,游标)

    在Oracle SQL中,有几个关键概念和技术值得深入理解,包括CASE WHEN语句、查看执行计划、文本操作、锁定和解锁表以及游标。以下是对这些知识点的详细解释: 1. **CASE WHEN语句**: CASE WHEN是SQL中的一个条件...

    decode函数与case when 的妙用

    在数据库管理和SQL编程中,`DECODE`函数和`CASE WHEN`语句是两种非常重要的逻辑判断工具,它们常用于处理条件分支和数据转换。在这篇文章中,我们将深入探讨这两种方法的用途、区别以及如何巧妙地运用它们。 首先,...

    oracle脚本 常用的数据库sql及pl\sql语言

    Oracle数据库是全球广泛使用的数据库管理系统,它提供了丰富的SQL(结构化查询语言)和PL/SQL(过程化语言/SQL)工具来支持数据管理和应用程序开发。本文将深入探讨Oracle中的SQL和PL/SQL语言,以及它们在数据库管理...

    Oracle Database 11g Introduction to SQL

    在Oracle Database 11g的Introduction to SQL教程中,你将学习如何有效地使用SQL进行数据操作,并逐渐掌握PL/SQL的编程技巧,以实现更复杂的数据库管理任务。通过实践,你可以熟练地运用这些知识在实际工作中解决...

    DBA对Oracle SQL编写规范的总结

    - **规范要求**:为确保复杂SQL语句的可读性,应当为其添加适当的注释,解释其功能和算法。 - **注释风格**: - 注释应单独成行并放在语句前面。 - 对于难以理解的条件表达式,应当添加注释。 - 对于重要的计算...

    Oracle分组统计

    Oracle 分组统计 Oracle 分组统计是数据库开发中常用的技术之一。它可以根据不同的条件对数据进行分组和聚合统计。分组统计的目的是将数据按照某种条件分组,然后对每个组进行聚合计算,最后输出结果。 分组统计...

    oracle_sql使用.docx

    Oracle SQL 是一种强大的数据库查询语言,它在处理复杂的数据库操作时表现出色。以下是一些关于Oracle SQL使用的关键知识点,以及一些常见的错误和解决方案。 首先,当你在查询中使用组函数如MAX时,根据SQL标准,...

    如何使用CASE WHEN语法判断入参代替if test=user-name != null and user-name !=

    不同于MyBatis `&lt;if&gt;` 标签在特定ORM框架下的应用,CASE WHEN是标准SQL的一部分,广泛支持于Oracle、SQL Server、MySQL等多种数据库系统乃至PL/SQL等SQL窗口。这意味着,无论身处何种开发环境或数据库平台,CASE ...

    oraclesql面试题

    从给定的Oracle SQL面试题中,我们可以...以上解析涵盖了Oracle SQL面试题中提及的关键知识点,从基本的SQL查询到更复杂的数据库管理和优化技术,对于准备Oracle SQL面试的候选人来说,掌握这些知识点是至关重要的。

Global site tag (gtag.js) - Google Analytics