sql - 如何修复此列在 SQL 中不存在错误?
问题描述
在 sales 表中,三列是btl_price
、bottle_qty
和total
。一笔交易的总额应该是 和 的btl_price
乘积bottle_qty
。有多少交易的价值total
不等于btl_price
倍bottle_qty
?
这是我的代码:
sql = """
Select (btl_price*bottle_qty) As total_sale, CAST(total AS money)
From sales
Where total != total_sale
"""
它一直告诉我“ column "total_sale" does not exist
”。
请帮助我找出我的错误。
PS:我在 Jupyter Notebook 中对此进行了编码。这是我在任何 DBMS 中都没有的做法。
解决方案
您不能在子句中使用在SELECT
子句中计算的列WHERE
(在 SQL 中,事务在前者之前被评估)。
此外,您需要适当的类型转换来比较金钱和数字。
最后,您需要打开聚合来计算满足条件的销售数量。
假设您使用的是 Postgres,那就是:
select count(*)
from sales
where total::numeric <> btl_price::numeric * btl_quantity
推荐阅读
- c# - 在c#中返回一个字段的数组?
- typescript - 用于依赖注入的 Typescript 中的 JSDoc typedef 模块导入等效于什么?
- postgresql - 不存在行时插入postgreql
- azure-logic-apps - 如何禁用逻辑应用的 SAS 授权?
- math - 覆盖所有 (N+1) 个点的最短距离。所有 N 个点都位于 x 轴上。剩余一点位于坐标平面的任意位置
- java - Java函数算法添加分钟到时间
- r - R使用两个不同的向量沿序列生成数字(Id),lapply?
- javascript - 角度表情符号选择器在 Windows 7 上不起作用
- java - 如何从 Maven 存储库中的依赖项中排除特定的 jar
- javascript - 尝试将图像上传到 Firebase 存储