【发布时间】:2022-09-18 02:48:20
【问题描述】:
我正在使用mysql。我有两张表,一张是关于电影类型的,另一张是关于带有时间戳的电影评级。我想将这两个表与电影 id 连接在一起,以计算每种电影的平均评分。我试图只提取每部电影至少有 10 个评分的电影类型和 12 月的评分,并按平均评分从高到低排序。
表“类型”
| movieId | type |
|---|---|
| 1 | Drama |
| 2 | Adventure |
| 3 | Comedy |
| ... | ... |
表“评分”
| movieId | rating | timestamp |
|---|---|---|
| 1 | 1 | 851786086 |
| 2 | 1.5 | 1114306148 |
| 1 | 2 | 1228946388 |
| 3 | 2 | 850723898 |
| 1 | 2.5 | 1167422234 |
| 2 | 2.5 | 1291654669 |
| 1 | 3 | 851345204 |
| 2 | 3 | 944978286 |
| 3 | 3 | 965088579 |
| 3 | 3 | 1012598088 |
| 1 | 3.5 | 1291598726 |
| 1 | 4 | 1291779829 |
| 1 | 4 | 850021197 |
| 2 | 4 | 945362514 |
| 1 | 4.5 | 1072836909 |
| 1 | 5 | 881166397 |
| 1 | 5 | 944892273 |
| 2 | 5 | 1012598088 |
| ... | ... | ... |
预期结果:(Nb 评级 >= 10 和 12 月给出的评级)
| type | Avg_Rating |
|---|---|
| Drama | 3.45 |
我正在尝试编写如下查询,但我无法执行它。 (原表约1万条数据) 我应该在哪里调整我的查询?
SELECT DISTINCT T.type, AVG(R.rating) FROM types AS T
INNER JOIN ratings AS R ON T.movieId = R.movieId
WHERE R.timestamp LIKE (
SELECT FROM_UNIXTIME(R.timestamp,'%M') AS Month FROM ratings
GROUP BY Month
HAVING Month = 'December')
GROUP BY T.type
HAVING COUNT(R.rating) >=10
ORDER BY AVG(R.rating) DESC;
【问题讨论】:
标签: mysql sql timestamp subquery