ORACLE 语句关联统计

很久不用SQL语句了,貌似入职新公司后,又回归到了三年前的SQL时代,一写一坨的SQL好吧,也当回归一下过去的知识。

下面是统计2月份某数据的计费统计

select  t.telno as 主号,VID 副号,t.area_code 地区, t.reg_time 注册时间,t.reg_source 注册工号,t.bill_start_date 计费时间,
 (case state  when 0
 then ‘0 正常‘  end)计费状态 from t_unreg_log t where t.bill_start_date<to_date(‘20150301‘,‘yyyymmdd‘) and t.bill_start_date>to_date(‘20150201‘,‘yyyymmdd‘)
  and t.unreg_time<to_date(‘20150301‘,‘yyyymmdd‘) and t.unreg_time>to_date(‘20150201‘,‘yyyymmdd‘)
   and t.type=‘9‘ union
    select   t.telno as 主号,VID 副号,t.area_code 地区, t.reg_time 注册时间,t.reg_source 注册工号,t.bill_start_date 计费时间,
 (case state  when 0
 then ‘0 正常‘  end)计费状态 from t_unreg_log t where t.bill_start_date<to_date(‘20150301‘,‘yyyymmdd‘) and t.bill_start_date>to_date(‘20150201‘,‘yyyymmdd‘)
  and t.unreg_time>to_date(‘20150301‘,‘yyyymmdd‘)
  union

   select t.telno as 主号,VID 副号,t.area_code 地区, t.reg_time 注册时间,t.reg_source 注册工号,t.bill_start_date 计费时间,
 (case state  when 0
 then ‘0 正常‘  end)计费状态  from t_unreg_log t where t.bill_start_date is not null
 and t.bill_start_date<to_date(‘20150201‘,‘yyyymmdd‘)  and t.unreg_time<to_date(‘20150301‘,‘yyyymmdd‘) and t.unreg_time>to_date(‘20150201‘,‘yyyymmdd‘)
 and t.type=‘9‘
      union
    select t.telno as 主号,VID 副号,t.area_code 地区, t.reg_time 注册时间,t.reg_source 注册工号,t.bill_start_date 计费时间,
 (case state  when 0
 then ‘0 正常‘  end)计费状态   from t_online_info t where t.bill_start_date is not null and t.bill_start_date<to_date(‘20150301‘,‘yyyymmdd‘))

写完之后发现这么多的冗余代码。

时间: 2024-10-10 15:31:33

ORACLE 语句关联统计的相关文章

53个Oracle语句优化规则详解(转)

Oracle sql 性能优化调整  1. 选用适合的ORACLE优化器        ORACLE的优化器共有3种:a. RULE (基于规则)   b. COST (基于成本) c. CHOOSE (选择性)    设置缺省的优化器,可以通过对init.ora文件中OPTIMIZER_MODE参数的各种声明,如RULE,COST,CHOOSE,ALL_ROWS,FIRST_ROWS . 你当然也在SQL句级或是会话(session)级对其进行覆盖.    为了使用基于成本的优化器(CBO,

用oracle语句计算百分比

来公司第一天,也没什么事干,经理说今天需要把报表做出来,需要写几个oracle语句,用来查询各类别下的人 员数量和占总人数比例.如下图 统计人数到不是问题,关键是比例不知道该怎么去做,上网查了好几个方式都尝试过了,但还是没能弄出来,一 下午的时间全花在解决这个问题上了,最后在要下班的时候,我突然看到了oracle中聚合函数sum() over的使用,最 终使得问题得到了解决. 实现代码: SELECT(CASE WHEN db_psndoc.age<=30 THEN '30岁以上' WHEN d

Oracle 语句中“||”代表什么啊?

Oracle 语句中"||"代表什么啊? Oracle 语句中"||"代表什么啊?跟ServerSQL中的字符串的连接符"+"是一个概念么? 1. 恩是的 是一个含义...select '1'||'2' from dual  代表12 2.跟ServerSQL中的字符串的连接符"+"是一个概念 3. --连接字段 SQL> select 'ABC'||'EFG' from dual; 'ABC'||'EFG' -----

学习ThinkPHP的第21天---关联预载入、关联统计

ThinkPHP关联预载入 预载入的作用是减少执行SQL语句,进而提升程序的性能. public function join(){ //用于监听SQL Db::listen(function ($sql, $time, $explain) { // 记录SQL echo $sql . ' [' . $time . 's]<br>'; // 查看性能分析结果 //dump($explain); }); //$brand = Brand::all([3,4]);//未预载入 程序执行了5句SQL语

Oracle语句

Oracle语句-基本查询 --清屏 SQL> host cls --当前用户 SQL> show user USER 为 "SCOTT" --当前用户的表 SQL> select * from tab; --员工表的结构 SQL> desc emp --查询所有的员工信息 SQL> select * from emp; --设置行宽 SQL> show linesize linesize 80 SQL> set linesize  150 -

Oracle之自动收集统计信息

一.Oracle 11g 在Oracle的11g版本中提供了统计数据自动收集的功能.在部署安装11g Oracle软件过程中,其中有一个步骤便是提示是否启动这个功能(默认是启用这个功能). 在这里介绍一下怎么将该功能启用与禁用: 1.查看自动收集统计信息的任务及状态: SQL> select client_name,status from dba_autotask_client; CLIENT_NAME STATUS ---------------------------------------

Oracle语句分类汇总

1.Oracle语句之数据定义语言(DDL) 1) CREATE TABLE   新建表 2) ALTER TABLE    修改表 3) TRUNCATE TABLE  清空表数据  举例:truncate table stu; 4) DROP TABLE      删除表 alter用法: 1.在表中新增字段: alter table stu add age int; 2.在表中删除字段: alter table stu drop column age; 3.对字段改名: alter tab

oracle语句随笔

oracle语句随笔 dmp数据的导入. CREATE USER memsspc IDENTIFIED BY 123; --创建用户 GRANT CONNECT,RESOURCE,DBA TO memsspc; --赋值权限 --cmd 中导入命令 IMP memsspc/123@ORCL FILE=D:\yuanzhangliu_work\suzhou\spc.dmp FULL=Y;

启用oracle 11g自动收集统计信息

今天接到朋友数据库一个case,在DBCA建库时,把自动收集统计信息的选项去掉了,数据库运行半年没有收集过统计信息,现在要启用方法如下: exec DBMS_AUTO_TASK_ADMIN.ENABLE(); exec DBMS_AUTO_TASK_ADMIN.ENABLE(client_name => 'auto optimizer stats collection',operation =>'auto optimizer stats job',window_name=> null);