我有一個記錄某些應用程序數據的表。從表中獲取最新的數據,然後做一筆總計
它的結構類似於
CREATE TABLE `log` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`website_id` int(11) DEFAULT NULL,
`created_at` timestamp NULL DEFAULT NULL,
`date` date DEFAULT NULL,
`pages` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=latin1;
數據
INSERT INTO `log` (`id`, `website_id`, `created_at`, `date`, `pages`)
VALUES
(1,1,'2014-04-03 00:30:01','2014-04-03',30),
(2,2,'2014-04-03 12:21:54','2014-04-03',13),
(3,1,'2014-04-04 01:10:12','2014-04-04',40),
(4,2,'2014-04-04 01:11:53','2014-04-04',20),
(5,1,'2014-04-04 02:43:31','2014-04-04',5),
(6,1,'2014-04-05 12:29:48','2014-04-05',8),
(7,1,'2014-04-05 13:48:51','2014-04-05',0),
(8,2,'2014-04-05 14:01:26','2014-04-05',20),
(9,2,'2014-04-05 15:51:01','2014-04-05',30),
(10,3,'2014-04-05 17:29:30','2014-04-05',15);
我想要做的是拉出來的一天每個網站的最新記錄,然後在執行一筆,所以我得到頁面列的總數。
因此期望3行
2014-04-03 | 43
2014-04-04 | 25
2014-04-05 | 45
因此讓行時,它需要獲得與第一次創建的最新行的網站,所以這裏
(6,1,'2014-04-05 12:29:48','2014-04-05',8),
(7,1,'2014-04-05 13:48:51','2014-04-05',0),
ID 7將被用於,因爲它更新。 因此,對於2014年4月5日的網站ID 1將具有0的頁面數,而不是8
select date, sum(pages) from log group by date
結果
2014-04-03 | 43
2014-04-04 | 65
2014-04-05 | 73
它的出路,因爲它沒有過濾器,但我不是確定如何過濾這個。
您是指'按日期排序desc'?你的sum()查詢似乎已經做到了你想要的 - 所有'pages'字段的總和,被分成了單獨的日子。 –
我不確定你想要過濾什麼。您擁有的查詢將生成您需要的結果。 –
你好,從我的問題「我想要做的是拉出每個網站的一天的最新記錄」 - 我上面的查詢只是總結所有的日期。請重新閱讀這個問題..如果一天內有兩個網站,那麼只有最新的記錄應該被計算在內。 – Wizzard