分组统计记录数,并统计各分组数据的各分项情况的SQL(DB2)
编程技术  /  houtizong 发布于 3年前   56
分组统计记录数,并统计各分组数据的各分项情况的SQL(DB2)
环境描述:
假设有两张表一张是商品表(product),一张定单表(order)
商品表(product)结构如下:
proId proName
1 商品1
2 商品2
3 商品3
proId表示商品id, proName表示商品名称
定单表(order)结构如下:
id orderName isDeal proId
1 定单1 Y 1
2 定单2 N 2
3 定单3 N 2
4 定单4 Y 3
5 定单5 Y 1
id表示定单的id,orderName表示定单名称,isDeal表示是否已成交(Y表示已成交,N表示未成交),proId是商品id是一个外键。
DDL如下:
-- product
CREATE TABLE TEST . product
( proId DECIMAL(10, 0),
proName VARCHAR(50)
)
DATA CAPTURE NONE;
#SYNC 10;
ALTER TABLE TEST . product
LOCKSIZE ROW
APPEND OFF
NOT VOLATILE;
#SYNC 20;
RUNSTATS ON TABLE TEST . product
AND INDEXES ALL
SHRLEVEL REFERENCE;
#SYNC 30;
-- order
CREATE TABLE TEST . order
( id DECIMAL(10, 0),
orderName VARCHAR(50),
isDeal VARCHAR(10),
proId DECIMAL(10, 0)
)
DATA CAPTURE NONE;
#SYNC 10;
ALTER TABLE TEST . order
LOCKSIZE ROW
APPEND OFF
NOT VOLATILE;
#SYNC 20;
RUNSTATS ON TABLE TEST . order
AND INDEXES ALL
SHRLEVEL REFERENCE;
#SYNC 30;
--insert
insert into PRODUCT values(1,'商品1');
insert into PRODUCT values(2,'商品2');
insert into PRODUCT values(3,'商品3');
insert into ORDER values(1,'定单1','Y',1);
insert into ORDER values(2,'定单2','N',2);
insert into ORDER values(3,'定单3','N',3);
insert into ORDER values(4,'定单4','Y',2);
insert into ORDER values(5,'定单5','Y',1);
现在需要统计每种商品有多少个定单,每种商品的定单成交和未成交的数量。
解决方案:
select count(proId) as count,proName,sum(case when isDeal='Y' then 1 else 0 end) as isDeal,sum(case when isDeal='N' then 1 else 0 end) isNotDeal
from (
select pro.proName,ord.orderName,ord.isDeal,ord.proId from product pro,order ord where pro.proId=ord.proId
) as a1 where 1=1 group by proId,proName;
得到的结果为:
count proName isDeal isNotDeal
2 | 商品1 | 2 | 0 |
2 | 商品2 | 1 | 1 |
1 | 商品3 | 0 | 1 |
其中第一列count表示定单数量,第二列proName表示商品名称,第三列isDeal表示已成交的定单数量,第四列isNotDeal表示未成交的定单数量。
请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!
技术博客集 - 网站简介:
前后端技术:
后端基于Hyperf2.1框架开发,前端使用Bootstrap可视化布局系统生成
网站主要作用:
1.编程技术分享及讨论交流,内置聊天系统;
2.测试交流框架问题,比如:Hyperf、Laravel、TP、beego;
3.本站数据是基于大数据采集等爬虫技术为基础助力分享知识,如有侵权请发邮件到站长邮箱,站长会尽快处理;
4.站长邮箱:[email protected];
文章归档
文章标签
友情链接