【问题标题】:MYSQL hourly data inner joinMYSQL 每小时数据内连接
【发布时间】:2015-12-30 12:28:28
【问题描述】:

表用户

username |   name   | role
admin    | tony     | 1
sales    | roy      | 2
custo    | boy      | 3

表日志统计

logdate             |   ip              | username
2015/12/12 18:02:22 | 192.168.1.11      | admin
2015/11/12 21:02:44 | 192.168.1.101     | sales
2015/11/12 22:04:27 | 192.168.1.121     | custo

我想要的输出是:

datetime              | admin   | sales     | custo
(currentdate) 18:00:0 | 1       | 0         | 0
(currentdate) 21:00:0 | 0       | 1         | 0
(currentdate) 21:00:0 | 0       | 0         | 1

显示系统中每个角色的每小时数据时,为什么我需要(当前日期)根据 ARMCHART 要求进行调整的输出。

到目前为止,我被卡住了

SELECT CONCAT(Curdate(), ' ', HOUR(logdate)) as 'hourly', 
(select count('logstat.username') 
   from logstat inner join user on user.username=logstat.username 
   and user.idrole='1' 
   where logdate BETWEEN (CURDATE() + INTERVAL (SELECT hourly(NOW())) hourly - INTERVAL 23 hourly) 
   AND ((CURDATE() + INTERVAL (SELECT hourly(NOW())) hourly)))as 'Admin' 
   FROM `logstat` GROUP BY `hourly`

【问题讨论】:

    标签: mysql select count group-by hour


    【解决方案1】:

    目前我找到了这个代码,

    SELECT CONCAT(Curdate(),' ',DATE_FORMAT(logdate,'%H')) as 'hourly',
         (select count('logstat.username') from logstat inner join user on user.username=logstatus.username and user.idrole='1' where HOUR(logdate) = HOUR(hourly))as 'Admin',
        (select count('logstat.username') from logstat inner join user on user.username=logstatus.username and user.idrole='2' where HOUR(logdate) = HOUR(hourly))as 'Sales',
        (select count('logstat.username') from logstat inner join user on user.username=logstatus.username and user.idrole='3' where HOUR(logdate) = HOUR(hourly))as 'Custo'   
    FROM `logstat` GROUP BY `hourly`
    

    希望对使用 amchart 有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-11
      • 1970-01-01
      • 2011-04-15
      • 2022-11-15
      • 2020-08-23
      • 2015-03-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多