如何解决在大数据中使用 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 举报,一经查实,本站将立刻删除。