我们经常会碰到各种分类统计,有时需要将这些统计结果一次显示出来,并计算分类统计占总量的比例,例如:一段时间内每日设备销售总量、台式机销量、笔记本销量等,我的工作中也碰到类似问题,我们需要统计一段时间内邮件收寄总量、自收总量、妥投总量、自投总量和自收自投总量等,以统计2011年10月16-22日合肥和芜湖到安庆邮件为例,其查询语句如下:

--收寄总量:
select a.clct_date rq,b.city sjj,d.city jdj,count(*) sjzl from tb_evt_mail_clct a,tb_jg b,(select distinct city,xs_code from sncn_zd_jg) d
 where a.clct_date>=to_date('20111016','yyyymmdd') and a.clct_date<=to_date('20111022','yyyymmdd')
  and b.zj_code=a.clct_bureau_org_code and d.xs_code=substr(a.rcv_area,1,4)
  and b.city in ( '合肥市','芜湖市' )and d.city in ('安庆市')
  group by a.clct_date,b.city,d.city order by a.clct_date,b.city,d.city;

--自收总量:
select a.clct_date rq,b.city sjj,d.city jdj,count(*) zszl from tb_evt_mail_clct a,sncn_zd_jg b,(select distinct city,xs_code from sncn_zd_jg) d
 where a.clct_date>=to_date('20111016','yyyymmdd') and a.clct_date<=to_date('20111022','yyyymmdd')
  and b.zj_code=a.clct_bureau_org_code and d.xs_code=substr(a.rcv_area,1,4)
  and b.city in ( '合肥市','芜湖市' )and d.city in ('安庆市')
  group by a.clct_date,b.city,d.city order by a.clct_date,b.city,d.city;

--妥投总量:
select a.clct_date rq,b.city sjj,d.city jdj,count(*) ttzl from tb_evt_mail_clct a,tb_jg b,tb_evt_dlv c,tb_jg d
 where a.clct_date>=to_date('20111016','yyyymmdd') and a.clct_date<=to_date('20111022','yyyymmdd')
  and a.mail_num=c.mail_num and c.dlv_sts_code='I' and b.zj_code=a.clct_bureau_org_code and d.zj_code=c.dlv_bureau_org_code
  and b.city in ( '合肥市','芜湖市' )and d.city in ('安庆市')
  group by a.clct_date,b.city,d.city order by a.clct_date,b.city,d.city;

--自投总量:
select a.clct_date rq,b.city sjj,d.city jdj,count(*) ztzl from tb_evt_mail_clct a,tb_jg b,tb_evt_dlv c,sncn_zd_jg d
 where a.clct_date>=to_date('20111016','yyyymmdd') and a.clct_date<=to_date('20111022','yyyymmdd')
  and a.mail_num=c.mail_num and c.dlv_sts_code='I' and b.zj_code=a.clct_bureau_org_code and d.zj_code=c.dlv_bureau_org_code
  and b.city in ( '合肥市','芜湖市' )and d.city in ('安庆市')
  group by a.clct_date,b.city,d.city order by a.clct_date,b.city,d.city;

--自收自投总量:
select a.clct_date rq,b.city sjj,d.city jdj,count(*) zszt from tb_evt_mail_clct a,sncn_zd_jg b,tb_evt_dlv c,sncn_zd_jg d
 where a.clct_date>=to_date('20111016','yyyymmdd') and a.clct_date<=to_date('20111022','yyyymmdd')
  and a.mail_num=c.mail_num and c.dlv_sts_code='I' and b.zj_code=a.clct_bureau_org_code and d.zj_code=c.dlv_bureau_org_code
  and b.city in ( '合肥市','芜湖市' )and d.city in ('安庆市')
  group by a.clct_date,b.city,d.city order by a.clct_date,b.city,d.city;

将每个查询结果看着是一个表,使用join关键字将所有的查询连接起来,就可以一次显示所有查询结果,语句如下:

select aa.rq,aa.sjj,aa.jdj,aa.sjzl,bb.zszl,cc.ttzl,dd.ztzl,ee.zszt from
(select a.clct_date rq,b.city sjj,d.city jdj,count(*) sjzl from tb_evt_mail_clct a,tb_jg b,(select distinct city,xs_code from sncn_zd_jg) d
 where a.clct_date>=to_date('20111016','yyyymmdd') and a.clct_date<=to_date('20111022','yyyymmdd')
  and b.zj_code=a.clct_bureau_org_code and d.xs_code=substr(a.rcv_area,1,4)
  and b.city in ( '合肥市','芜湖市' )and d.city in ('安庆市')
  group by a.clct_date,b.city,d.city order by a.clct_date,b.city,d.city) aa
left join
(select a.clct_date rq,b.city sjj,d.city jdj,count(*) zszl from tb_evt_mail_clct a,sncn_zd_jg b,(select distinct city,xs_code from sncn_zd_jg) d
 where a.clct_date>=to_date('20111016','yyyymmdd') and a.clct_date<=to_date('20111022','yyyymmdd')
  and b.zj_code=a.clct_bureau_org_code and d.xs_code=substr(a.rcv_area,1,4)
  and b.city in ( '合肥市','芜湖市' )and d.city in ('安庆市')
  group by a.clct_date,b.city,d.city order by a.clct_date,b.city,d.city) bb
  on aa.rq=bb.rq and aa.sjj=bb.sjj and aa.jdj=bb.jdj
left join
(select a.clct_date rq,b.city sjj,d.city jdj,count(*) ttzl from tb_evt_mail_clct a,tb_jg b,tb_evt_dlv c,tb_jg d
 where a.clct_date>=to_date('20111016','yyyymmdd') and a.clct_date<=to_date('20111022','yyyymmdd')
  and a.mail_num=c.mail_num and c.dlv_sts_code='I' and b.zj_code=a.clct_bureau_org_code and d.zj_code=c.dlv_bureau_org_code
  and b.city in ( '合肥市','芜湖市' )and d.city in ('安庆市')
  group by a.clct_date,b.city,d.city order by a.clct_date,b.city,d.city) cc
  on aa.rq=cc.rq and aa.sjj=cc.sjj and aa.jdj=cc.jdj
left join
(select a.clct_date rq,b.city sjj,d.city jdj,count(*) ztzl from tb_evt_mail_clct a,tb_jg b,tb_evt_dlv c,sncn_zd_jg d
 where a.clct_date>=to_date('20111016','yyyymmdd') and a.clct_date<=to_date('20111022','yyyymmdd')
  and a.mail_num=c.mail_num and c.dlv_sts_code='I' and b.zj_code=a.clct_bureau_org_code and d.zj_code=c.dlv_bureau_org_code
  and b.city in ( '合肥市','芜湖市' )and d.city in ('安庆市')
  group by a.clct_date,b.city,d.city order by a.clct_date,b.city,d.city) dd
  on aa.rq=dd.rq and aa.sjj=dd.sjj and aa.jdj=dd.jdj
left join
(select a.clct_date rq,b.city sjj,d.city jdj,count(*) zszt from tb_evt_mail_clct a,sncn_zd_jg b,tb_evt_dlv c,sncn_zd_jg d
 where a.clct_date>=to_date('20111016','yyyymmdd') and a.clct_date<=to_date('20111022','yyyymmdd')
  and a.mail_num=c.mail_num and c.dlv_sts_code='I' and b.zj_code=a.clct_bureau_org_code and d.zj_code=c.dlv_bureau_org_code
  and b.city in ( '合肥市','芜湖市' )and d.city in ('安庆市')
  group by a.clct_date,b.city,d.city order by a.clct_date,b.city,d.city) ee
  on aa.rq=ee.rq and aa.sjj=ee.sjj and aa.jdj=ee.jdj;

注意:连接条件是所有查询中结果相同的字段,即aa.rq=ee.rq and aa.sjj=ee.sjj and aa.jdj=ee.jdj;
 
附:JOIN语句语法:

JOIN用于根据两个或多个表中的列之间的关系,从这些表中查询数据。

JOIN: 如果表中有至少一个匹配,则返回行
LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
FULL JOIN: 只要其中一个表中存在匹配,就返回行

SQL INNER JOIN 关键字
在表中存在至少一个匹配时,INNER JOIN 关键字返回行。
INNER JOIN 关键字语法
SELECT column_name(s)
FROM table_name1
INNER JOIN table_name2
ON table_name1.column_name=table_name2.column_name
注释:INNER JOIN 与 JOIN 是相同的。

SQL LEFT JOIN 关键字
LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。

LEFT JOIN 关键字语法
SELECT column_name(s)
FROM table_name1
LEFT JOIN table_name2
ON table_name1.column_name=table_name2.column_name

SQL RIGHT JOIN 关键字
RIGHT JOIN 关键字会右表 (table_name2) 那里返回所有的行,即使在左表 (table_name1) 中没有匹配的行。

RIGHT JOIN 关键字语法
SELECT column_name(s)
FROM table_name1
RIGHT JOIN table_name2
ON table_name1.column_name=table_name2.column_name
注释:在某些数据库中, RIGHT JOIN 称为 RIGHT OUTER JOIN。

SQL FULL JOIN 关键字
只要其中某个表存在匹配,FULL JOIN 关键字就会返回行。

FULL JOIN 关键字语法
SELECT column_name(s)
FROM table_name1
FULL JOIN table_name2
ON table_name1.column_name=table_name2.column_name
注释:在某些数据库中, FULL JOIN 称为 FULL OUTER JOIN。

如何将多个SQL查询统计结果一次显示出来相关推荐

  1. InterSystems 最佳实践系列---APM – 监控 SQL 查询性能

    自 Caché 2017 以后,SQL 引擎包含了一些新的统计信息. 这些统计信息记录了执行查询的次数以及运行查询所花费的时间. 对于想要对包含许多 SQL 语句的应用程序的性能进行监控和尝试优化的人 ...

  2. 通过手动创建统计信息优化sql查询性能案例

    本质原因在于:SQL Server 统计信息只包含复合索引的第一个列的信息,而不包含复合索引数据组合的信息 来源于工作中的一个实际问题, 这里是组合列数据不均匀导致查询无法预估数据行数,从而导致无法选 ...

  3. SQL Server 2016:实时查询统计

    一个数据库查询超时了,而你并不知道原因.估计查询计划可以揭示问题所在,因此,你彻底地消除了超时.但一个小时后,查询还在运行,而你无法获得真正的执行计划.要是有一种方法可以找出服务器内部实际正在发生的事 ...

  4. from server sql 拼接统计两个子查询_4复杂查询-SQL

    1 视图 什么是视图 视图中存放的是SQL语句,客户端使用视图时,会运行视图里的SQL语句创建出一张临时表. 如何创建视图 语法: create view 视图名称(视图列名1,视图列名2) AS s ...

  5. sql server 统计_看SQL Server 2016中的新实时查询统计信息

    sql server 统计 With the release of SQL Server 2016 also comes a great new feature to get a live view ...

  6. t–sql pl–sql_不正确SQL Server统计信息– SQL查询性能的杀手–基本知识

    t–sql pl–sql 什么是SQL Server统计信息? (What are SQL Server statistics?) SQL Server statistics are a collec ...

  7. execution 排除_使用SQL Server 2016 Live Execution统计信息对SQL查询性能进行故障排除

    execution 排除 SQL Server Management Studio a graphical interactive that allows you to interact with t ...

  8. mysql统计数量函数方法_mySql关于统计数量的SQL查询操作

    mySql关于统计数量的SQL查询操作,状态,订单,语句,函数,数量 mySql关于统计数量的SQL查询操作 易采站长站,站长之家为您整理了mySql关于统计数量的SQL查询操作的相关内容. 我就废话 ...

  9. 优雅的利用Mybatis插件实现sql查询耗时统计

    优雅的利用Mybatis插件实现sql查询耗时统计 一. Mybatis反射机制讲解 二. 代理模式讲解 静态代理 动态代理 JDK动态代理参考代码 Proxy.newProxyInstance(xx ...

最新文章

  1. 浅谈三维点云中的几何语义
  2. 扩增子图表解读6韦恩图:比较组间共有和特有OTU或分类单元
  3. c++ gdi修改dpi_最新高血压标准修改,包括确诊标准和用药方案!你的药吃对了吗?...
  4. django连接redis(文章看着不错)
  5. python计算两字符串中的位置_python – 计算两个字符串之间距离的算法
  6. 【TensorFlow】TensorFlow从浅入深系列之三 -- 教你如何对MNIST手写识别
  7. SaaS市场增长迅速 企业借CRM消灭管理黑洞
  8. testng数据驱动_TestNG数据提供者
  9. Ackerman阿克曼函数的递归与非递归(栈)实现
  10. 【Matlab】线性回归之最小二乘法的应用与验证
  11. 三门问题(基于贝叶斯分析和python的实现)
  12. c语言硬币大小,C语言抛硬币
  13. 解决ThinkPad E580因AMD显卡导致系统崩溃的问题
  14. 计算机科学精粹这本书有用吗,计算机科学精粹
  15. FITC-WFA荧光素标记紫藤凝集素(WFA,WFL)
  16. 每日一练——回文链表
  17. Android WebView 的回退方法(goback) 遭遇重定向
  18. Macbook删除苹果系统,装单系统win10系统
  19. 亚太元宇宙新纪元峰会于1月12日在上海淳大万丽酒店盛大召开
  20. 阻塞非阻塞使用,initial assign always区别

热门文章

  1. 「趣学前端」filter滤镜,CSS的PS特技
  2. 课件 计算机软件,《计算机软件的组成》PPT课件.ppt
  3. mysql统计一年12个月的数据,当某个月没数据的时候自动补0
  4. 药明康德成都研发中心投入运营;中国白酒行业净利润将迎来七年来首次下滑 | 美通企业日报...
  5. [古典密码]:Vigenere cipher 维吉尼亚密码
  6. 数据加密标准概览系列之密码设备应用接口规范-GMT 0018-2012
  7. C语言连接mysql数据库详细步骤
  8. 小程序在wxml中使用js,wxs,取整,判断等操作
  9. 代码缩进对齐用空格还是制表符?
  10. 第17课:转型的分类(图文篇)