这样的表:
create_adte info close_date
-------------------------------------------
2018-10-05 DTS2018100500723 2018-10-23
2018-10-30 DTS2018103001638 2018-10-05
2019-03-01 DTS2019030102931 2018-10-05
2018-10-05 DTS2019030105944 2019-05-18
2018-10-05 DTS2019030108602 2019-05-29
我想在一天内创建num并关闭num
如上: 在2018-10-05创建3条记录,在2018-10-05关闭2条记录, 不在同一天创建并关闭
我已经尝试过了,但是没有用
select a.create_date,count(a.create_date) as new_dts_num,countIf(a.create_date=b.close_date)
from dts a,dts b
group by a.create_date
order by new_dts_num desc
答案 0 :(得分:0)
您不需要将表自身连接起来,只需要比较两列:
select create_date,count(create_date) as new_dts_num from dts
where create_date = close_date
group by create_date
order by new_dts_num desc
答案 1 :(得分:0)
我很确定您已经知道,但是countif
不是有效的SQL命令。我认为处理此问题的正常方法是使用带有Case
的{{1}}语句。另外,您也不想加入(如果您想...加入,那么您所做的就是将每一行连接到其他每一行)。像这样:
Sum
这将重新创建您尝试执行的操作。您的解释有些不同。如果只希望行相同(说明的方式),则不需要所有计数/等,只需将其作为where子句的一部分即可:
select create_date,count(create_date) as new_dts_num ,
sum(case when created_date = close_date then 1 else 0 end) as dts_same
from dts
group by create_date
order by new_dts_num desc