我有以下两个表:
内容:
| id | name | created_by |
+----+-------+------------+
| 1 | test | me |
| 2 | test2 | me |
| 3 | test3 | you |
| 4 | test4 | me |
喜欢_不喜欢:
| id | content_id | like | dislike |
+----+------------+------+---------+
| 1 | 1 | 1 | 0 |
| 2 | 2 | 1 | 0 |
| 3 | 2 | 0 | 0 |
我需要计算 created_by = me
的最后 2 行内容的平均点赞数。
例如,最后两个 content_id 是 2 和 4。
like_dislike表有content_id为2的记录,一行like为1,一行like为0,所以平均值为1/2。
我尝试了以下查询,但它不起作用:
SELECT ((SELECT COUNT(*)
FROM `like_dislike`
WHERE `like`='1' AND `content_id`= pi.id) / (COUNT(*))
FROM content AS pi
WHERE pi.create_by = 'me'
ORDER BY pi.id DESC
LIMIT 2
最佳答案
SELECT x.*
, AVG(liked)
FROM content x
JOIN content y
ON y.created_by = x.created_by
AND y.id >= x.id
JOIN like_dislike z
ON z.content_id = x.id
WHERE x.created_by = 'me'
GROUP BY x.id
HAVING COUNT(DISTINCT y.id) <= 2;
或者类似的东西
关于php - 计算 MySQL 中特定行的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27205099/