今天在操作数据库时,有一个新的统计需求
需求:统计2019年一月份列名为A的调用量,其中DEPT_NM和COMPANY_NAME一致的,认为是同一数据,需要去重
表名称 : TEST , 表结构如下
ID | COMPANY_NAME | DEPT_NM | PRODUCT_NM | OP_TIME |
1 | 测试数据1 | 测试部门1 | A | 2019-02-13 08:12:00 |
2 | 测试数据1 | 测试部门1 | A | 2019-01-13 08:12:00 |
3 | 测试数据3 | 测试部门3 | C | 2018-01-13 08:12:00 |
4 | 测试数据4 | 测试部门4 | D | 2018-08-13 08:12:00 |
在上述数据中,虽然ID 1和2是两条数据,但是因为是同一部门查询同一企业,所以认为是一次查询
DB2的SQL如下
SELECT COUNT(*)
FROM (SELECT COMPANY_NAME,
DEPT_NM,
PRODUCT_NAME,
OP_TIME,
ROW_NUMBER() OVER(PARTITION BY COMPANY_NAME,DEPT_NM ORDER BY COMPANY_NAME,DEPT_NM) AS COUNT
FROM TEST)
WHERE COUNT = 1
AND PRODUCT_NAME='A'
AND (OP_TIME BETWEEN '2019-01-01' AND '2019-1-31');