MySQL 查询 - 如何从其他表中获取基于 "views"、 "likes"和 "shares"的趋势行?

标签 mysql sql sql-optimization

我有三张 table ; 文章喜欢分享。我想要获取(比如 50 篇)个人观点、点赞和分享次数最多的文章。这将作为一个查询,根据这三个条件获取热门文章。

我将在下面描述简化的表结构:

文章

+----+-----------+-------+
| id | title     | views |
+----+-----------+-------+
| 1  | Article 1 |    92 |
| 2  | Article 2 |    14 |
| 3  | Article 3 |    39 |
| 4  | Article 4 |    87 |
| 5  | Article 5 |     8 |
+----+-----------+-------+

喜欢

+----+-----------+
| id | articleID |
+----+-----------+
| 1  |         2 |
| 2  |         3 |
| 3  |         2 |
| 4  |         5 |
| 5  |         3 |
| 6  |         3 |
+----+-----------+

分享

+----+-----------+----------+
| id | articleID | type     |
+----+-----------+----------+
| 1  |         1 | facebook |
| 2  |         3 | facebook |
| 3  |         1 | twitter  |
| 4  |         4 | twitter  |
| 5  |         2 | facebook |
+----+-----------+----------+

我不确定获取热门文章的最佳公式。每篇文章的浏览量始终占主导地位,这意味着如果我将总浏览量、喜欢和分享添加到一个汇总值中,结果或多或少取决于最高浏览量:

[0] => "Article 1"
[1] => "Article 4"
[2] => "Article 3"
[3] => "Article 2"
[4] => "Article 5"

我的问题是;如何根据这三个条件做出最佳的“趋势查询”?

更新

我正在寻找的公式是基于观看次数、点赞次数和分享次数的总体百分比值。例如,第 1 条具有以下百分比值:

Views:  38.33% // Article's views divided by all articles' combined views (92 / 240)
Likes:  0%     // Article's likes divided by all articles' combined likes (0 / 6)
Shares: 40%    // Article's likes divided by all articles' combined shares (2 / 5)
Total:  78.33  // Calculation: 38.33 + 0 + 40

第 1 条的“趋势点”为 78.33。对所有文章执行此操作应提供以下结果:

[0] => "Article 3" // 86.25
[1] => "Article 1" // 78.33
[2] => "Article 2" // 59.16
[3] => "Article 4" // 56.25
[4] => "Article 5" // 19.99

如何进行这样的 MySQL 查询?

最佳答案

观看次数总是可以预测的,因此我建议您跟踪观看次数的点赞和分享百分比。

关于MySQL 查询 - 如何从其他表中获取基于 "views"、 "likes"和 "shares"的趋势行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42598400/

相关文章:

mysql - Python 3 MySQL GPS跟踪器数据库插入错误

mysql - 在phpmyadmin中搜索和替换列

Mysql union/join 多列帮助

sql - 如何在我的 SQL Server 代理作业中创建一个步骤来运行我的 SSIS 包?

mysql - 在具有 160M+ 行的 MySQL InnoDB 表上,选择查询非常慢

android - 如何将 SQLite 数据库从 Android 复制到 MySQL 数据库(复制/同步)

mysql - 除了 guid 之外,保留自动递增字段的任何优势

php - SQL:如何每天选择一条记录,假设每天包含超过 1 个值 MySQL

SQL 多次检查相似项

mysql - 在多对多相关表中进行高效搜索