MYSQL在同一工作日前一年进行比较

我有一系列的销售交易。我想创建一个MySql查询,该查询将按日期对销售交易进行分组,但也有一个列显示最近的工作日上一年的销售额。

我知道我可以使用DATE_ADD来获取正确的日期。例如,以下公式将给我我想要的相对于2020年3月1日的日期:

DATE_ADD('2020-03-01', INTERVAL -52 WEEK)

以上返回2019年3月3日。但是我不知道如何像这样转换数据:

+-----------+---------+
|Date       | Sales   |
|-----------+---------+
|2020-03-01 | 45.00   |
|2020-03-01 | 1.23    |
|2020-03-01 | 30.00   |
|2020-03-01 | 5.75    |
|2020-03-01 | 25.63   |
.
.
.
.
|2019-03-03 | 3.50    |
|2019-03-03 | 76.89   | 
|2019-03-03 | 1003.50 |
|2019-03-03 | 1.34    |
.
.
.
.
+-----------+---------+

插入这样的表:

+-----------+--------------+--------------+
|Date       | Curr Sales   | Last Yr Sales|
|-----------+--------------+--------------+
|2020-03-01 | 107.61       | 1085.23      |
+-----------+--------------+--------------+
评论
  • benim
    benim 回复

    一种选择是条件聚合:

    select
        concat(date_format(current_date, '%Y'), '-', date_format(date, '%m-%d')) date,
        sum(case when date > current_date - interval 1 year then sales end) current_year_sales,
        sum(case when date <= current_date - interval 1 year then sales end) last_year_sales
    from mytable
    where date > current_date - interval 2 year
    group by date_format(date, '%m-%d')
    order by date_format(date, '%m-%d')
    

    这样可以为您提供最近365天的每日销售额以及上一年同一天的相应销售额。