有一个线上服务器接口访问日志表, 只有访问时间,接口,ip三个字段,求在11月9号下午14-15点访问接口/api/user/login接口的top10ip地址,hive语法
时间: 2024-02-05 17:04:10 浏览: 35
可以使用Hive SQL来实现:
```
SELECT ip, COUNT(*) AS count
FROM access_logs
WHERE api='/api/user/login'
AND substring(time, 12, 2)='14'
AND CAST(substring(time, 15, 2) AS INT) BETWEEN 0 AND 59
AND date(time)='2021-11-09'
GROUP BY ip
ORDER BY count DESC
LIMIT 10;
```
其中,`access_logs`是日志表名,`time`字段为访问时间,格式为YYYY-MM-DD HH:mm:ss,`api`字段为接口名称,`ip`字段为用户IP地址。上述语句查询的是2021年11月9日下午14:00至15:00之间访问`/api/user/login`接口的top10的IP地址,按访问次数降序排列。使用`substring()`函数获取时间的小时和分钟部分,然后使用`CAST()`函数将分钟部分转换成整数,并筛选出符合条件的记录,最后使用`GROUP BY`和`ORDER BY`对IP地址进行统计和排序。
相关问题
有一个线上服务器接口访问日志表,有访问时间,访问接口,和用户的ip,求11月9号下午14-15点,访问/api/user/login接口的top10的IP地址,用hive语法
可以使用Hive SQL来实现:
```
SELECT ip, COUNT(*) AS count
FROM access_logs
WHERE api='/api/user/login'
AND dt='20211109'
AND hour=14
AND minute>=0
AND minute<60
GROUP BY ip
ORDER BY count DESC
LIMIT 10;
```
其中,`access_logs`是日志表名,`dt`字段为日期,格式为YYYYMMDD,`hour`字段为小时,`minute`字段为分钟,`api`字段为接口名称,`ip`字段为用户IP地址。上述语句查询的是2021年11月9日下午14:00至15:00之间访问`/api/user/login`接口的top10的IP地址,按访问次数降序排列。
有一个日志表,记录登录信息,字段有账号,姓名,IP,查询所有用户最后一次登录的信息
假设日志表名为`login_log`,字段为`username`,`name`,`ip`,`login_time`,则查询所有用户最后一次登录的信息的SQL语句如下:
```sql
SELECT username, name, ip, MAX(login_time) AS last_login_time
FROM login_log
GROUP BY username, name, ip;
```
该SQL语句使用了聚合函数`MAX`来获取每个用户最后一次登录的时间,并使用`GROUP BY`将结果按照用户分组。最终查询结果包括`username`、`name`、`ip`和`last_login_time`四个字段,其中`last_login_time`表示每个用户的最后一次登录时间。