1

我正在尝试大致了解服务器过去的负载;我想利用日志表来估计并发访问,但我在构建查询时遇到了困难。表格如下:

仅供参考:我没有设计/创建这个表,接管了一个丑陋的数据库:(

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 开始计算每一秒的唯一用户名(记住数据跨越数月)。

有什么想法吗?

谢谢,凯特

4

1 回答 1

0

听起来你只需要使用COUNTand DATEFORMAT

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 小提琴演示

根据数据的存储方式,您可能不需要使用DATEFORMAT. 但这将返回按日期、小时、分钟和秒分组的不同用户名的计数。我认为这就是你想要完成的。如果您想弄清楚哪一秒或哪一小时的流量最多,您可以使用SECOND(add_date)例如。取决于您的确切需求(Fiddle 包括两个示例)。

于 2013-05-01T17:05:13.447 回答