mysql - 如何使用 CROSS JOIN 显示总数的百分比?
问题描述
我有一个货车订单的数据集,我需要计算完成 1 个订单的客户的百分比。我正在使用交叉连接来获得总数。但是,它一直显示错误。有什么问题吗?第 1 部分都可以显示总分,第 2 部分可以显示所有总分。但是,它不能与 CROSS JOIN 组合在一起。谢谢!
SELECT
SUM(client_total_price)
FROM
(SELECT SUM(total_price) AS client_total_price,
COUNT(idvanOrder) AS number_of_order
FROM `vanorder` GROUP BY requestor_client_id
WHERE number_of_order =1)
CROSS JOIN (SELECT SUM(total_price) AS total FROM `vanorder`) t2
解决方案
我相信您可以使用公用表表达式加窗口函数:
WITH prices AS (
SELECT
SUM(total_price) OVER (PARTITION BY requestor_client_id) AS priceOrder
FROM vanorder
WHERE requestor_client_id IN (
SELECT requestor_client_id
FROM vanorder
GROUP BY requestor_client_id
HAVING COUNT(*) = 1)
),
total AS (SELECT SUM(total_price) AS totalPrice FROM vanorder)
SELECT priceOrder, totalPrice, 100 * priceOrder / totalPrice AS percentage
FROM prices,total
推荐阅读
- javascript - addEventListener 在被点击之前执行
- c# - AnyStore1.exe 中出现“System.TypeInitializationException”类型的未处理异常
- oracle - %type 可以与 Object 类型一起使用吗?是否有可能是因为我在尝试这样做时遇到了错误
- android - Android Kotlin - 如何从另一个 Activity 调用 Activity 方法
- amazon-web-services - AWS boto3 - 调用 GetObject 操作时出现 InvalidToken 错误
- php - 将嵌套的 Json 发送到 Symfony 表单
- python - Python Try后不执行Except?
- javascript - 在 javascript 中更改时锚定目标到 iframe 不起作用(在新选项卡中打开)
- javascript - jQuery隐藏切换表单字段
- php - 谷歌浏览器显示等待缓存