gpt4 book ai didi

mysql - 使用 DISTINCT(多列)和 MAX(另一列)计算行数

转载 作者:行者123 更新时间:2023-11-29 06:52:52 25 4
gpt4 key购买 nike

我的表包含用户对不同项目的投票。它有以下列:

id, user_id, item_id, vote, utc_time

只有 id 是唯一字段,user_idutc_time 的组合可能也是唯一的。但用户可以多次为任何项目投票。

投票不是数字,而是具有多个可能值之一(例如,“糟糕”、“差”、“好”、“优秀”)。

我需要计算有多少不同的用户对给定的 #item# 投了“优秀”、“好”等最后一票。所以假设我只有四个不同的可能投票值,我需要获取四个记录,其中包含以下字段:

vote, count_of_users

我了解如何计算所有投票,而不仅仅是用户的最后投票:

SELECT vote, COUNT(id) FROM votes WHERE item_id=#item# GROUP BY vote;

但我无法弄清楚如何只计算每个用户的 utc_time = MAX(utc_time) 的选票...感谢您的帮助。

这个问题与我之前的问题有关:Select one row with MAX(column) for known other several columns without subquery

最佳答案

如果适合您,请尝试此解决方案,

SELECT  a.item_ID,
SUM(CASE WHEN a.vote = 'awful' THEN 1 ELSE 0 END) awful,
SUM(CASE WHEN a.vote = 'bad' THEN 1 ELSE 0 END) bad,
SUM(CASE WHEN a.vote = 'good' THEN 1 ELSE 0 END) good,
SUM(CASE WHEN a.vote = 'excellent' THEN 1 ELSE 0 END) excellent
FROM tableName a
INNER JOIN
(
SELECT user_ID, MAX(utc_time) max_time
FROM tableName
GROUP BY user_ID
) b ON a.user_ID = b.user_ID AND
a.utc_time = b.max_time
-- WHERE a.item_ID = 'valueHere'
GROUP BY a.item_ID

更新 1

SELECT  a.item_ID,
a.vote,
COUNT(*) totalCount
FROM tableName a
INNER JOIN
(
SELECT user_ID, MAX(utc_time) max_time
FROM tableName
WHERE item_id = 'valueHere'
GROUP BY user_ID
) b ON a.user_ID = b.user_ID AND
a.utc_time = b.max_time
GROUP BY a.vote

关于mysql - 使用 DISTINCT(多列)和 MAX(另一列)计算行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14430426/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com