题解 | #小破站会员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;
全部评论

相关推荐

评论
点赞
收藏
分享
牛客网
牛客企业服务