mysql 如何比较前一天的值?

7gyucuyw  于 2023-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(148)

The 2 Tables I'm working with我是第一次学习SQL,并且掌握了基本语法,所以我一直在StrataScratch上尝试解决问题。
以下是问题陈述:每一天,你都被要求找到一个前一天赚更多钱的商人。在比较商家之间的总额之前,将总额四舍五入到最近的2位小数。您的输出应包括格式为'YYYY-MM-DD'的日期和商家名称,但仅限于前一天的数据可用的日期。
注意:如果多个商家具有相同的最高共享金额,您的输出应包括不同行中的所有名称。
我的代码:

SELECT DATE(order_timestamp), merchant_details.name
FROM order_details
LEFT JOIN merchant_details
ON order_details.id = merchant_details.id
WHERE SELECT 
    (SELECT name, ROUND(total_amount_earned,2) FROM merchant_details

我知道我的代码是破碎的和未完成的,但我真的不知道我如何去比较日期,日期和值在同一时间。我很确定有一个AND函数,但不知道如何格式化它。我还在链接中包含了一张table的照片。提前感谢你帮助一个新手。

5vf7fwbs

5vf7fwbs1#

通过使用一个子查询“昨天”,另一个子查询“今天”,当我们通过“内部连接”连接这两个子查询时,我们将结果限制为仅具有这两天数据的那些商家。然后,相对简单的任务是按金额列中的任一个对结果进行排序以确定哪个(哪些)商家做得最好。

SELECT
      m.name AS merchant_name
    , yday.yesterday_amount_earned
    , tday.today_amount_earned
FROM merchant_details AS m
INNER JOIN (
    SELECT
          o.merchant_id
        , sum(total_amount_earned) yesterday_amount_earned
    FROM order_details AS o
    WHERE (
            order_timestamp >= date_sub(CURRENT_DATE, interval 1 day)
        AND order_timestamp < CURRENT_DATE
            )
    GROUP BY
          o.merchant_id
    ) AS yday ON m.id = yday.merchant_id
INNER JOIN (
    SELECT
          o.merchant_id
        , sum(total_amount_earned) today_amount_earned
    FROM order_details AS o
    WHERE (
           order_timestamp >= CURRENT_DATE
       AND order_timestamp < date_add(CURRENT_DATE, interval 1 day))
    GROUP BY
          o.merchant_id
    ) AS tday ON m.id = tday.merchant_id
ORDER BY 
      yday.yesterday_amount_earned DESC
    , tday.tday_amount_earned DESC

相关问题