sql修改,急,求教

select (

select count(distinct(id))

from table

where  trunc(insert_time) > =to_date(&dateFrom,'dd/MM/yyyy')  and 

trunc(insert_time) <= to_date(&dateTo,'dd/MM/yyyy'))

from dual;

这是之前的脚本,目前问题是用户id的记录日期insert_time会出现多次,想要按照首次记录日期计在一定日期区间出现的次数,一天出现多次算一次。请问怎么修改?

xiaoshaoshiyong 发布于 2021-9-17 11:03
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
让过去Lv6中级互助
发布于2021-9-17 11:06(编辑于 2021-9-17 13:27)

开窗函数ROW_NUMBER(),按ID和时间(精确到日)分组,insert_time排序,最后取数的时候,取一个rn=1就好了

----------------------

image.png

  • 熊猫头 熊猫头 摸鱼队长
    2021-09-17 11:07 
  • 好的东西 好的东西 感谢
    2021-09-17 12:37 
  • xiaoshaoshiyong xiaoshaoshiyong(提问者) select( select count(id) from select row_number over(order by insert_time) as insert_date, id from table where trunc(insert_time) >= to_date(&dateFrom,\'dd/mm/yyyy\') and trunc(insert_time) <= to_date(&dateTo,\'dd/mm/yyyy\') group by id, trunc(insert_time) having row_number = 1 ) from dual;
    2021-09-17 13:00 
  • xiaoshaoshiyong xiaoshaoshiyong(提问者) 可以帮我检查下吗
    2021-09-17 13:01 
  • 让过去 让过去 回复 xiaoshaoshiyong(提问者) 稍微改了一下,你可以看看
    2021-09-17 13:28 
最佳回答
0
好的东西Lv2见习互助
发布于2021-9-17 12:36
非常感谢
  • 2关注人数
  • 432浏览人数
  • 最后回答于:2021-9-17 13:27
    请选择关闭问题的原因
    确定 取消
    返回顶部