mysql - 在 SQL 查询中添加新列
问题描述
我想使用查询结果创建新列,以查找运费对收入的变化
最初的问题是运费额外增加 10% 对收入有何影响。我目前正在使用 Northwind 数据集
select sum(UnitPrice*Quantity*(1-Discount)) - sum(Freight*1.1) as New, sum(UnitPrice*Quantity*(1-Discount)) - sum(Freight) as Old, New-Old
from "Order Details", Orders;
SQL 查询不起作用,因为它无法识别新变量“New”和“Old”
我已经更新了建议的版本,但它会产生错误消息
NexusDB: Query534984250: Query execution failed:
NexusDB: Correlation name for subquery expected:
SELECT New,Old,New-Old
FROM (select
sum(UnitPrice*Quantity*(1-Discount)) - sum(Freight*1.1) as New,
sum(UnitPrice*Quantity*(1-Discount)) - sum(Freight) as Old
FROM "Order Details"
INNER JOIN "Orders" ON ("Order Details".OrderID = Orders.OrderID)
) ;
解决方案
在子查询中运行新和旧列后,您可以使用它们
但是您的(子)查询不会给您正确的结果,因为
From `Order Details`, `Orders`
是两个表之间的交叉连接,并且会返回太多行而无法为您提供预期的结果
所以你会
FROM `Order Details` od
INNER JOIN `Orders` o ON o.id = od.order_REf_id
然后你仍然必须检查结果是否是你正在寻找的
SELECT New,Old, New-Old
FROM (select
sum(UnitPrice*Quantity*(1-Discount)) - sum(Freight*1.1) as New,
sum(UnitPrice*Quantity*(1-Discount)) - sum(Freight) as Old
from `Order Details`, `Orders`
) t1
最终效果会像
SELECT New,Old, New-Old
FROM (select
sum(UnitPrice*Quantity*(1-Discount)) - sum(Freight*1.1) as New,
sum(UnitPrice*Quantity*(1-Discount)) - sum(Freight) as Old
FROM `Order Details` od
INNER JOIN `Orders` o ON o.id = od.order_REf_id`
) t1
推荐阅读
- r - 在 R 中使用“if”子句创建向量
- javascript - 删除重复项后,查找数组的长度
- api - Looking for Outlook API that works in the same way as 'SearchREsults.item.select' for Office API or 'WordEditor' for VSTO
- mysql - R - 从 HIVE 读取外语数据并写入 MySQL
- git - 即使在 git stash 之后,git 仍然会发现更改,似乎与 .gitattribute 有关
- angular - Angular 6 组件类拆分文件
- ios - 以编程方式将滚动视图滚动到其底部
- corda - Corda 节点在首次启动并加入网络时会执行哪些步骤?
- cordova - 从 Mobile (Ionic-cordova) 使用 Vimeo Tus 协议上传视频
- r - 提供以闪亮的方式绘制或显示图像的选项