首页 > 解决方案 > 如何修复此列在 SQL 中不存在错误?

问题描述

在 sales 表中,三列是btl_pricebottle_qtytotal。一笔交易的总额应该是 和 的btl_price乘积bottle_qty。有多少交易的价值total不等于btl_pricebottle_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 中都没有的做法。

标签: sql

解决方案


您不能在子句中使用在SELECT子句中计算的列WHERE(在 SQL 中,事务在前者之前被评估)。

此外,您需要适当的类型转换来比较金钱和数字。

最后,您需要打开聚合来计算满足条件的销售数量。

假设您使用的是 Postgres,那就是:

select count(*)
from sales 
where total::numeric <> btl_price::numeric * btl_quantity

推荐阅读