我正在尝试查找系统上用户的活跃时间,当我们按日期分组时, min() 和 max() 函数返回范围之外的日期。
我使用的查询是:
选择cast(trndte作为日期)作为activity_date,usr_id,user_name,prt_client_id,actcod,min(begdte)作为start_time,max(enddte)作为end_time,(max(enddte)-min(begdte))作为active_hrs
, count(distinct(prtnum)) 为 SKU,(count(frstol) + count(tostol)) 为位置,sum(TRNQTY) 数量
来自 by.by_bi_daily_tran
其中,在“2024-04-01”和“2024-04-22”之间进行强制转换(trndte as date)
prt_client_id = 'MUJI' 和 actcod = 'TRLR_LOAD'
按演员分组(trndte作为日期),usr_id,用户名,prt_client_id,actcod;
对于这一行:
我希望得到同一活动日期的 MIN 和 MAX 时间戳,但它肯定不起作用。有熟悉这个的吗?
您按 trndte 进行分组,并取 enddte 和 begdte 的 max() 和 min()。为什么期望这些其他列不属于您的分组范围?数据中是否存在某种不言而喻的依赖性?你看过源数据吗?
注意:将来如果您希望人们阅读您的代码,请对其进行格式化以提高可读性。另外,不要发布数据图像,因为这很难阅读。