我有一个包含2列的表 - date_time和ip_address。我希望能够识别每天出现10次以上的IP地址。我无法弄清楚如何仅从date_time列中提取日期并运行此查询,这是我尝试过的:
SELECT ip_address, date(date_time) as date, count(date) as cnt FROM ip_tracking GROUP BY date_time, ip_address HAVING cnt > 10 ORDER BY date_time DESC
我收到#1054 - 未知专栏' date'在'字段列表'。我是否需要在查询开头创建一个列?
由于
答案 0 :(得分:0)
您无法在同一级别中访问表达式的别名。而是使用与'count'
相同的表达式。
我相信您希望count
date
而非date_time
。
SELECT ip_address
, date(date_time) as date
, count( date( date_time ) ) as cnt
FROM ip_tracking
GROUP BY date( date_time ), ip_address
HAVING cnt > 10
ORDER BY date_time DESC
答案 1 :(得分:0)
使用group by的日期(你可以使用别名),并使用COUNT(*)(而不是在计数中有别名)。
SELECT ip_address,
date(date_time) as date,
count( * ) as cnt
FROM ip_tracking
GROUP BY date, ip_address
HAVING cnt > 10
ORDER BY date DESC