mysql - 分组前只获取唯一记录
问题描述
我有一个名为的表votes
,该表可能包含具有这些列的重复记录business_id
和user_id
. 我创建了一个视图,将显示每个企业的票数,但不幸的是,重复的数据也被计算在内,这不应该被计算在内。下面是我的查看代码
(
SELECT
`v`.`business_id` AS `business_id`,
COUNT(`v`.`vote_id`) AS `num_votes`
FROM
`connectn_top100`.`votes` `v`
WHERE
(`v`.`year` = 2019)
GROUP BY
`v`.`business_id`
)
实际数据将是
------------------------------------
id | business_id | user_id | vote_id
------------------------------------
1 | 12 | 12 | 1
------------------------------------
2 | 12 | 12 | 1
------------------------------------
3 | 12 | 12 | 1
------------------------------------
4 | 13 | 15 | 1
------------------------------------
5 | 13 | 15 | 1
------------------------------------
6 | 12 | 16 | 1
------------------------------------
7 | 23 | 16 | 1
------------------------------------
所以结果应该是
------------------------------------
id | business_id | user_id | vote_id
------------------------------------
1 | 12 | 12 | 1
------------------------------------
4 | 13 | 15 | 1
------------------------------------
6 | 12 | 16 | 1
------------------------------------
7 | 23 | 16 | 1
------------------------------------
所以它应该是 user_id 必须有唯一的 business_id 和 business_id 必须有唯一的 user_id
尝试添加另一个 GROUP BY 但似乎是一个错误。
解决方案
如果你想每个user_id
只计算一次business_id
,你可以使用count(distinct ...)
:
SELECT
`v`.`business_id` AS `business_id`,
COUNT(DISTINCT `v`.`user_id`) AS `num_votes`
FROM `connectn_top100`.`votes` `v`
WHERE `v`.`year` = 2019
GROUP BY `v`.`business_id`
编辑:从您的示例数据中,看起来您想要:
SELECT
`v`.`business_id` AS `business_id`,
`v`.`user_id`,
COUNT(DISTINCT `v`.`vote_id`) AS `num_votes`
FROM `connectn_top100`.`votes` `v`
WHERE `v`.`year` = 2019
GROUP BY `v`.`business_id`, `v`.`user_id`
推荐阅读
- postgresql - 无法远程连接到 Postgres 服务器
- opencl - OpenCL上的差异时间计算浮动和双倍?
- qt - QDir::makeAbsolute() 怎么会失败?
- android - 无法解析对应的JNI Function | 打开简历 | 安卓 | 科特林
- laravel - 我在 Laravel 5 中使用附加方法得到重复的条目。不知道问题是什么
- reactjs - 当 redux saga 执行成功操作时如何警告反应组件?
- android - 尽管手机没有内置计步器,但如何计算步数
- javascript - 如何使用 ng-repeat 遍历对象内的数组
- linux - 如何在 Bash 脚本中解析包含空格作为参数的字符串
- autodesk-forge - 通过 forge-apis 库调用 FORGE API 时出错