2013-05-01 40 views
1

我想弄清楚服務器過去的負載;我想利用日誌表來估計併發訪問,但是我一直在構建查詢。該表如下:MySQL查詢來識別併發訪問/使用

FYI:我沒有設計/創建該表,接手一個醜陋的數據庫:(

CREATE TABLE `user_access_log` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `oem_id` varchar(50) NOT NULL, 
    `add_date` datetime NOT NULL, 
    `username` varchar(36) NOT NULL, 
    `site_id` int(5) NOT NULL, 
    `card_id` int(6) NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1$$ 

表數據:

--------------------------------------------------------------------------- 
| id  | add_date   | username   | site_id | card_id | 
--------------------------------------------------------------------------- 
| 185818901 | 2012-12-25 03:01:04 | 1944E9745A9CE91 | 4  | 27273 | 
| 185818900 | 2012-12-25 03:01:04 | EA5902C8115C9FF | 1  | 27238 | 
--------------------------------------------------------------------------- 

這可能或者可能是不合邏輯的...但是,我試圖從add_date中計算每秒的唯一用戶名(請記住數據跨越幾個月)

有什麼想法?

感謝, 凱特

+0

add_date datetime列的格式是什麼? – o0rebelious0o 2013-05-01 17:01:24

回答

0

聽起來像是你只需要使用COUNTDATEFORMAT

select DATE_FORMAT(add_date, '%Y-%m-%d %H:%i:%s'), 
    count(distinct username) usercount 
from player_user_video 
group by DATE_FORMAT(add_date, '%Y-%m-%d %H:%i:%s') 

SQL Fiddle Demo

根據您的數據是如何存儲,你可能不需要使用DATEFORMAT 。但是,這會返回一系列按日期,小時,分鐘和秒分組的不同用戶名稱。我想這就是你想要完成的。如果您試圖找出哪個秒或哪個小時的流量最多,則可以使用SECOND(add_date)作爲示例。取決於你的確切需求(小提琴包括兩個例子)。

+0

謝謝!我剛剛過了一會兒。 – Kate 2013-05-01 17:26:28

+0

@Kate - np,很高興能幫到你! – sgeddes 2013-05-01 17:28:23