工作中经常遇到按天、周、月、季度和年统计所有 API 的访问量,并能够找出一年中访问量最高的月份、天和小时。在 Oracle 数据库中,可以使用 GROUP BY 和日期函数来按天、周、月、季度和年分别统计所有 API 的访问量,并显示每个 API 及其对应的访问次数。
1. 按天统计所有 API 的访问量
SELECT
api_name,
TRUNC(access_time) AS day,
COUNT(*) AS visit_count
FROM
api_logs
GROUP BY
api_name,
TRUNC(access_time)
ORDER BY
api_name,
day;
2. 按周统计所有 API 的访问量
SELECT
api_name,
TRUNC(access_time, 'IW') AS week_start,
COUNT(*) AS visit_count
FROM
api_logs
GROUP BY
api_name,
TRUNC(access_time, 'IW')
ORDER BY
api_name,
week_start;
3. 按月统计所有 API 的访问量
SELECT
api_name,
TRUNC(access_time, 'MM') AS month,
COUNT(*) AS visit_count
FROM
api_logs
GROUP BY
api_name,
TRUNC(access_time