【发布时间】:2020-09-04 10:17:05
【问题描述】:
我有两个表,订单和记录如下。
Orders 表有三列:
order_id seller order_price
123 abc 50
456 abc 75
789 def 60
Records 表也有三列,用于记录对订单所做的任何更改:
order_id log_made_at record
123 2018-08-05 11:00:00 order approved
123 2018-08-05 12:00:00 shipping city updated
123 2018-08-05 12:00:10 order declined
456 2018-08-05 12:10:00 order approved
789 2018-08-05 12:20:10 order declined
“记录”列存储字符串值,例如“订单已批准”、“订单被拒绝”、“发货城市更新”等。“log_made_at”列存储记录的时间戳。
如果我想计算每个卖家的已批准订单金额占已下订单总金额(已批准订单的美元金额)/(已下订单总金额的美元金额)的百分比,我应该使用什么查询?我很难分离出最后一条记录是“已批准订单”的订单,以将其价格用作已批准订单的美元金额。
我希望使用上面的示例数据得到的结果如下所示:
seller approved_order_dollar_amount_percentage
abc 0.6
def 0.0
我是如何得到上述计算的:卖家 abc 有两个订单(123 和 456),每个订单的价格标签分别为 50 和 75,因此他的总订单价格为 125。但是,只有订单 456 的最终日志为 '订单已获批准,因为订单 123 最终被拒绝。所以卖家abc最终批准的订单金额百分比是75/125 = 0.6。
我尝试运行的查询是这个,但它总是给我错误的数字:
SELECT order_price
FROM orders o
INNER JOIN records r ON o.order_id = r.order_id
WHERE r.log_made_at IN (
SELECT MAX(log_made_at)
FROM records
GROUP BY order_id)
AND r.record = 'order approved'
)/SUM(total_order_price) AS approval_rate_by_sum
【问题讨论】:
-
你试过什么?我们鼓励展示您的尝试。
-
我不懂数学。你能告诉我们你是如何计算
0.6的吗? -
@TimBiegeleisen 对于卖家 abc,他有两个订单(123 和 456),每个订单的价格标签分别为 50 和 75,因此他的总订单价格为 125。但是,只有订单 456 有最终自 123 号订单最终被拒绝后的“订单已批准”日志。所以卖家abc最终批准的订单金额百分比是75/125 = 0.6。
标签: mysql sql sum average greatest-n-per-group