SELECT users.username, SUM(orders.order_total) AS total_order_amount, SUM(orders.order_total) / total_sum_order_total.sum_order_total * 100 AS order_percent FROM users INNER JOIN orders ON users.user_id = orders.user_id CROSS JOIN (SELECT SUM(order_total) AS sum_order_total FROM orders) AS total_sum_order_total GROUP BY users.user_id ORDER BY order_percent DESC; 为什么要用到cross join
时间: 2023-06-17 17:06:22 浏览: 150
select_adder.rar_Verilog adder_adder_select
在这个 SQL 查询语句中,CROSS JOIN 被用来创建一个子查询,该子查询只返回一个行,其中包含了所有订单的 order_total 的总和。这个子查询被命名为 total_sum_order_total,它被用来计算所有订单总金额的百分比。
在 SELECT 子句中,我们可以使用 total_sum_order_total 子查询中的 sum_order_total 列来计算每个用户的订单总金额与所有订单总金额的比例。由于只有一个行,我们使用 CROSS JOIN 来将它与 users 表和 orders 表关联,以计算所有订单的总金额。这就是为什么要使用 CROSS JOIN 的原因。
阅读全文