mysql - 仅从多列中选择唯一记录
问题描述
我有一个按 IP、版本和平台记录下载的表格。手动查看表格,我看到很多重复项,其中所有 3 个值都相同。(用户可能只是不耐烦)我想使用 SELECT 语句过滤掉重复项,如果所有 3 个值都相同,则只返回其中一个条目。更高级,如果可能的话,我还有一个使用 CURRENT_TIMESTAMP 的日期/时间字段。如果我可以包含来自不同日期但不是不同时间的重复项,那就太好了。因此,我可以查看同一用户是否在另一天再次下载。
我主要只是想统计每天有多少独特的人下载每个版本。DB表的结构很简单...
键(AUTO_INCREMENT)、日期(CURRENT_TIMESTAMP)、ip、user_agent、平台、版本
该软件有 Windows 和 Mac 版本(平台),我提供当前版本和几个不同的过去版本,这些版本在重大更改之前。
解决方案
只需按您要排除重复的字段进行分组,例如
SELECT ip, platform, version, COUNT(*) AS number_of_tries, max(download_date) AS last_download_date
FROM downloads
GROUP BY ip, platform, version, DATE(download_date)
然后,对按天分组的结果进行一些更高级的过滤会相对容易,等等。
推荐阅读
- javascript - 使用 Ajax 和 Javascript 将数量添加到购物车中已有商品的小计的数量向上和向下按钮在点击时不起作用:)
- assembly - 为什么即使没有 16 字节堆栈对齐,linux nasm 也能正常工作
- android - 构建apk给出错误无法创建类型为DefaultUserHomeScopedCompileCaches的服务...在颤振中
- javascript - 如何使用 React-TinyMCE 将 CSS 类添加到我的可编辑元素
- android - 遵循有关单元测试和失败的 Android 文档
- c++ - 在 VSC 中不使用 a.out 进行调试
- google-cloud-platform - 如果我通过 ssh 到 GCP 运行脚本,如果我的本地机器进入睡眠状态,它会被中断吗?
- javascript - 如何在 nodejs/javascript 中通过 websocket 建立安全的客户端/服务器连接?
- javascript - 在 Vuejs 中动态更改按钮文本
- javascript - 如何在我的仓库中的 github 服务器中显示本地 gltf 加载器三个 js