0
点赞
收藏
分享

微信扫一扫

LeetCode(数据库)- 按年度列出销售总额


题目链接:​​点击打开链接​​

题目大意:略。

解题思路:略。

AC 代码

WITH t0 AS(SELECT *, DATE_FORMAT(period_start, '%Y') fromY, DATE_FORMAT(period_end, '%Y') toY  FROM Sales WHERE DATE_FORMAT(period_start, '%Y') = DATE_FORMAT(period_end, '%Y')),
t1 AS(SELECT *, DATE_FORMAT(period_start, '%Y') fromY, DATE_FORMAT(period_end, '%Y') toY FROM Sales WHERE DATE_FORMAT(period_start, '%Y') - DATE_FORMAT(period_end, '%Y') = -1),
t2 AS(SELECT *, DATE_FORMAT(period_start, '%Y') fromY, DATE_FORMAT(period_end, '%Y') toY FROM Sales WHERE DATE_FORMAT(period_start, '%Y') - DATE_FORMAT(period_end, '%Y') = -2),

t3 AS(SELECT product_id, fromY report_year, (DATEDIFF(period_end, period_start) + 1) * average_daily_sales total_amount
FROM t0

UNION ALL

SELECT product_id, fromY, (DATEDIFF(CONCAT(fromY, '-12-31'), period_start) + 1) * average_daily_sales total_amount
FROM t1

UNION ALL

SELECT product_id, toY, (DATEDIFF(period_end, CONCAT(toY, '-01-01')) + 1) * average_daily_sales total_amount
FROM t1

UNION ALL

SELECT product_id, fromY, (DATEDIFF(CONCAT(fromY, '-12-31'), period_start) + 1) * average_daily_sales total_amount
FROM t2

UNION ALL

SELECT product_id, fromY + 1, 365 * average_daily_sales total_amount
FROM t2

UNION ALL

SELECT product_id, toY, (DATEDIFF(period_end, CONCAT(toY, '-01-01')) + 1) * average_daily_sales total_amount
FROM t2)

SELECT CONCAT('', p.product_id) product_id, product_name, report_year, total_amount
FROM t3 JOIN Product p ON p.product_id = t3.product_id
ORDER BY product_id, report_year


举报

相关推荐

力扣之1384.按年度列出销售总额

如何列出所有数据库?

0 条评论