mysql - 查询以基于小时获取一天中的大多数视图

时间:2017-09-24 10:02:16

标签: mysql

我有桌子"访客" 这些字段是

    id = integer
    ip = char
    route = char
    created_at = timestamp

我想根据小时计算小组数, 我使用了查询

    SELECT * , HOUR(created_at) AS created_hour , COUNT(created_hour)
 FROM `visitors` WHERE created_at > DATE(NOW()) GROUP BY created_hour

但是我得到了这个错误,我可以"计算"基于" group by"

SQL query: Documentation

SELECT * , HOUR(created_at) AS created_hour , COUNT(created_hour) FROM `visitors` WHERE created_at > DATE(NOW()) GROUP BY created_hour LIMIT 0, 25

MySQL said: Documentation
#1054 - Unknown column 'created_hour' in 'field list'

2 个答案:

答案 0 :(得分:3)

COUNT(created_hour)更改为 COUNT(*)

而不是 WHERE created_at> DATE(现在()),使用 WHERE created_at< DATE(NOW())即可。查询中的当前WHERE条件将强制不返回任何内容。

答案 1 :(得分:2)

您在同一SELECT中使用SELECT子句中的别名。这是不可能的,相反,你必须使用它:

SELECT HOUR(created_at) AS created_hour
     , COUNT(HOUR(created_at))
FROM `visitors`
WHERE created_at < DATE(NOW())
GROUP BY created_hour

请注意,在MySQL中,确实可以在GROUP BY中使用别名。但它无法在SELECT中使用它。

另请注意,除非您是时间旅行者,否则created_at > DATE(NOW())确实没有多大意义。

最好使用COUNT(*)代替COUNT(HOUR(created_at)),它更具可读性,并且会返回相同的结果。