你可能想嘗試update_id - 1
的加盟views
表,如下面的查詢:
SELECT v1.page_id,
v1.view_count latest_count,
v2.view_count previous_count,
(1 - v2.view_count/v1.view_count) * 100 trend_perc
FROM views v1
JOIN views v2 ON (v2.update_id = v1.update_id - 1 AND
v2.page_id = v1.page_id)
WHERE v1.update_id = (SELECT MAX(update_id) FROM `views`)
GROUP BY v1.page_id
ORDER BY page_id;
測試案例:
CREATE TABLE `updates` (update_id int, timestamp datetime);
CREATE TABLE `views` (page_id int, update_id int, view_count int);
INSERT INTO `updates` VALUES (1, '2010-07-08 12:00:00');
INSERT INTO `updates` VALUES (2, '2010-07-08 13:00:00');
INSERT INTO `updates` VALUES (3, '2010-07-08 14:00:00');
INSERT INTO `views` VALUES (1, 1, 100);
INSERT INTO `views` VALUES (2, 1, 50);
INSERT INTO `views` VALUES (3, 1, 75);
INSERT INTO `views` VALUES (1, 2, 150);
INSERT INTO `views` VALUES (2, 2, 90);
INSERT INTO `views` VALUES (3, 2, 80);
INSERT INTO `views` VALUES (1, 3, 175);
INSERT INTO `views` VALUES (2, 3, 115);
INSERT INTO `views` VALUES (3, 3, 120);
結果:
+---------+--------------+----------------+------------+
| page_id | latest_count | previous_count | trend_perc |
+---------+--------------+----------------+------------+
| 1 | 175 | 150 | 14.2857 |
| 2 | 115 | 90 | 21.7391 |
| 3 | 120 | 80 | 33.3333 |
+---------+--------------+----------------+------------+
3 rows in set (0.00 sec)
注意trend_perc
將NULL
如果previous_count
恰好是0
。
「VIEWS.view_count」是一個增量(僅差異)還是總值?更好的是,提供示例數據:) – 2010-07-08 20:43:22
查看計數是總價值。感謝:) – Pablo 2010-07-08 20:50:55