阿里云日志服务sls里存在一个表名为log的表,口数据所在字段名为request uri,接口数据中需要截取掉‘?’后会随机变化的内容,保留前面固定不变的内容,域名所在字段名为host,根据以上情况写出选择域名的情况下分页查询接口数据及占比的正确sql
时间: 2024-02-17 16:59:56 浏览: 258
以下是选择域名的情况下分页查询接口数据及占比的 SQL:
```
SELECT SUBSTRING(request_uri, 1, INSTR(request_uri, '?')-1) as uri, host, count(*) as total_count, count(*)/(SELECT count(*) FROM log WHERE host = 'example.com') as ratio
FROM log
WHERE host = 'example.com'
GROUP BY uri, host
ORDER BY total_count DESC
LIMIT 0, 10;
```
注:在上述 SQL 中,假设要选择域名为 example.com 进行查询,查询结果仅返回该域名下的数据。其中,SUBSTRING 函数用于截取 request_uri 字段中固定部分的内容,INSTR 函数用于查找字符串中某个子字符串的位置,GROUP BY 用于分组统计 count,ORDER BY 用于按 count 降序排序,LIMIT 用于分页查询。
相关问题
阿里云日志服务sls里存在一个表名为log的表,口数据所在字段名为request uri,接口数据中需要截取掉‘?’后会随机变化的内容,保留前面固定不变的内容,域名所在字段名为host,根据以上情况写出选择域名的情况下接口数据及占比的正确sql
根据以上情况,可以使用如下SQL语句来选择域名的情况下接口数据及占比:
```
SELECT
SUBSTR(`request uri`, 1, INSTR(`request uri`, '?')-1) AS api,
`host`,
COUNT(*) AS cnt,
COUNT(*)/(SELECT COUNT(*) FROM log WHERE `host` = 'xxx.aliyun.com') AS ratio
FROM
log
WHERE
`host` = 'xxx.aliyun.com'
GROUP BY
`api`
ORDER BY
cnt DESC;
```
其中,将 `request uri` 字段截取固定内容的方法是使用 `SUBSTR` 函数和 `INSTR` 函数,前者用于截取字符串,后者用于查找 `?` 的位置。`host` 字段直接使用即可。
最后,使用 `GROUP BY` 对 `api` 字段进行分组,并使用 `COUNT` 函数统计出现的次数,再使用子查询计算出占比,最后使用 `ORDER BY` 按照数量倒序排序。
阅读全文