题解 | #小破站会员2021年9月收入#
小破站会员2021年9月收入
http://www.nowcoder.com/practice/9072394169054c278518b1872cb72213
重点1:datediff函数的使用,求日期差 重点2:sum求和 重点3:子查询的使用、round函数的使用
SELECT
-- 先计算开始结束的相差的天数得出使用时间
-- 使用时间乘以平均价格对所有用户求和
-- 取精确度
ROUND(SUM((DATEDIFF(stop_date, start_date)+1) * avg_revenue), 2) AS revenue
FROM
(
SELECT
*,
-- 如果在九月前就开通,则起始时间以以九月一日开始
IF(begin_date<='2021-9-1', date('2021-9-1'), begin_date) AS start_date,
-- 如果结束时间在九月底前,那么以九月底为结束
IF(end_date>='2021-9-30',date('2021-9-30'), end_date) AS stop_date,
pay_amount / days AS avg_revenue
FROM
detail_list_tb
WHERE
(begin_date<'2021-9-1' and end_date>'2021-9-1')
OR (begin_date BETWEEN '2021-9-1' AND '2021-9-30')
)a;