sql - BigQuery 中除以 0 错误,即使短路也应该防止它
问题描述
在我的数据中,该fulfillment_ratio
字段可能等于或可能不等于 0。我不知道为什么我仍然得到除以 0 的错误。我以为我正在使用语句进行短路,IF
以便如果给定组存在 0,则不会进行计算。
SELECT
order_key,
order_source,
sale_item.key AS key,
ANY_VALUE(sale_item.name) AS name,
ANY_VALUE(sale_item.sku) AS sku,
ANY_VALUE(sale_item.quantity) * MIN(fulfillment_ratio) AS quantity_counted,
MIN(sale_item.base_price) AS price,
IF(COUNTIF(fulfillment_ratio = 0) > 0, 0, SUM(cogs / fulfillment_ratio) * MIN(fulfillment_ratio)) AS cost_of_goods_sold
FROM
order_product_stockable_items
GROUP BY
order_key,
order_source,
sale_item.key
正如您在 SELECT 列表的最后一行中看到的那样,我正在计算是否有任何情况fulfillment_ratio = 0
,如果有的话,我认为0
会返回并且不会评估错误条件。但是,我仍然得到除以 0 的错误。这怎么可能?有一个更好的方法吗?
解决方案
你可以使用NULLIF
:
COALESCE(SUM(cogs / NULLIF(fulfillment_ratio,0)) * MIN(fulfillment_ratio),0)
推荐阅读
- python - 当一个按钮被按下去一个网站链接。如何?
- .net - Xamarin.Forms 如何存储图像 - 最佳实践
- c - recv() 的字节数大于缓冲区中存储的数据量?
- flutter - 当其他下拉值在颤动中发生变化时,将下拉值重置为偏移量0
- javascript - 从 Node.js 中的 API 获取数据并发送到 Reactjs
- html - vuetify - 如何在 v-col 中居中元素
- python - Scrpay - ModuleNotFoundError:没有名为“http.client”的模块
- c - openSSL C 程序
- php - 在 Wordpress 中获取帖子附件的链接或路径
- python - 多重继承 | Python