我正在處理舊的數據庫,並且必須基於舊數據庫創建新列。這是一個日誌表,每一行都是一個事件。因此uid
是一個用戶ID,用戶可以進行多個驗證請求。用加入或分組的SQL請求回到時間
這裏是我的表
event_id uid event
1 1 REQUEST
2 1 VALIDATION
3 2 REQUEST
4 3 REQUEST
5 3 VALIDATION
6 2 VALIDATION
7 1 REQUEST
8 1 VALIDATION
這裏想什麼,我有
event_id uid event last_event_id request_nb
1 1 REQUEST 8 1
2 1 VALIDATION 8 1
3 2 REQUEST 6 1
4 3 REQUEST 5 1
5 3 VALIDATION 5 1
6 2 VALIDATION 6 1
7 1 REQUEST 8 2
8 1 VALIDATION 8 2
我認爲我需要一個uid
group by
,像1 + SUM(CASE WHEN EVENT = 'VALIDATION' THEN 1 ELSE 0 END) AS request_nb
的總和。 last_event_id
的MAX
。但我不熟悉這種連接。
這裏是我的樣本數據集:
CREATE TABLE IF NOT EXISTS `docs` (
`event_id` int(6) unsigned NOT NULL,
`uid` int(3) unsigned NOT NULL,
`event` varchar(200) NOT NULL,
PRIMARY KEY (`event_id`)
) DEFAULT CHARSET=utf8;
INSERT INTO `docs` (`event_id`, `uid`, `event`) VALUES
('1', '1', 'REQUEST'),
('2', '1', 'VALIDATION'),
('3', '2', 'REQUEST'),
('4', '3', 'REQUEST'),
('5', '3', 'VALIDATION'),
('6', '2', 'VALIDATION'),
('7', '1', 'REQUEST'),
('8', '1', 'VALIDATION');
和同小提琴:http://sqlfiddle.com/#!9/404dcf/1
有沒有人有一個想法?
謝謝!
標籤與正在使用的數據庫你的問題。 –