微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在大数据中使用 Distinct 和 MAX(date)

如何解决在大数据中使用 Distinct 和 MAX(date)

我有一个表,用于存储访问过产品的用户列表(带有访问日期)。 我编写了以下查询获取在“2021-02-01”和“2021-02-26”之间访问过产品 B 的用户列表。
SELECT disTINCT UserName,Country,ADate,Product FROM Report WHERE UserName != '-' and Product='B and (CAST(ADate AS DATE) BETWEEN @startdate AND @enddate '
然后它给出以下结果:

UserName Country    ADate                 Product
-------- ------    --------              ---------
asson     IN    2021-02-10 00:00:00.000     B
rajan     US    2021-02-23 00:00:00.000     B
rajan     US    2021-02-25 00:00:00.000     B
moody     US    2021-02-14 00:00:00.000     B
rajon     US    2021-02-01 00:00:00.000     B
lukman    US    2021-02-10 00:00:00.000     B

由于用户 rajan 在 2 天内访问了该产品,它显示了 rajan 的 2 个条目,即使我添加distinct。所以我修改查询如下:
SELECT disTINCT UserName,max(ADate),Product FROM Report WHERE UserName != '-' and Product='B' and (CAST(ADate AS DATE) BETWEEN @startdate AND @enddate group by Username,product
这个查询给了我所需的结果。但是我现在面临的问题是,当我选择间隔超过一个月的表(比如 2 个月之间的数据)时,我在输出中遗漏了一些数据。我相信这可能是由于 MAX(ADate)。任何人都可以提出一个很好的建议来摆脱这个问题吗?

解决方法

这将按月为您提供每个用户的最新访问日期

SELECT DISTINCT UserName,Country,month(ADate) as month,max(ADate),Product FROM Report WHERE UserName != '-'  and Product='B' group by UserName,month,Product

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。