您只需将YEAR 中的一个字改为DAY 或DATE。
SELECT
YEAR(start_date) AS Year,
MONTH(start_date) AS Month,
COUNT(*) / (COUNT(DISTINCT DAY(start_date))) AS avg_trips_per_day
FROM
trips
GROUP BY Year , Month
ORDER BY Year , Month;
或
SELECT
YEAR(start_date) AS Year,
MONTH(start_date) AS Month,
COUNT(*) / (COUNT(DISTINCT DATE(start_date))) AS avg_trips_per_day
FROM
trips
GROUP BY Year , Month
ORDER BY Year , Month;
您的结果是每月所有行程的总和的原因是因为
COUNT(DISTINCT YEAR(start_date)) 的结果是 1
因此您可以运行以下两个查询来查看差异。
SELECT
YEAR(start_date) AS Year,
MONTH(start_date) AS Month,
COUNT(*) AS total_trips_of_month,
COUNT(DISTINCT DAY(start_date)) AS days_having_trips_that_month,
COUNT(*) / (COUNT(DISTINCT YEAR(start_date))) AS avg_trips_per_day
FROM
trips
GROUP BY Year , Month
ORDER BY Year , Month
对比
SELECT
YEAR(start_date) AS Year,
MONTH(start_date) AS Month,
COUNT(*) AS total_trips_of_month,
COUNT(DISTINCT DAY(start_date)) AS days_having_trips_that_month,
COUNT(*) / (COUNT(DISTINCT DATE(start_date))) AS avg_trips_per_day
FROM
trips
GROUP BY Year , Month
ORDER BY Year , Month