gpt4 book ai didi

mysql - SQL调优: division between the sum of two columns

转载 作者:行者123 更新时间:2023-11-29 07:26:02 25 4
gpt4 key购买 nike

我想做这样的事情:

SELECT SUM(COL1) / SUM(COL2) FROM table_name

我的问题:

  1. 错误处理。如果 SUM(COL2) 为 0,大多数情况下会返回什么数据库实现?在这种情况下如何返回 0?
  2. 性能调整。是否通常保证这 2 个 SUM()将在单个循环中计算,而不是遍历所有记录来计算 SUM(COL1),然后再次遍历所有内容以计算 SUM(COL2)?如果不能保证,如何改进性能使得这种划分可以由数据库引擎在单个循环中完成?

您可以根据您熟悉的数据库引擎来回答这个问题。

<小时/>

(对于问题1我已经得到了很多很好的答案,但是似乎没有人知道问题2的答案。)

最佳答案

SQL:

DECLARE @Table TABLE (column1 INT, column2 INT)

INSERT INTO @Table
VALUES
(0, 0)

SELECT CASE WHEN SUM(Column2) > 0
THEN
SUM(column1) / SUM(column2)
ELSE 0
END AS [Sum Division]
FROM @Table

如果column2的总和不大于0(包括空值),则给出0值。

编辑

这假设您在第 2 列中不会有负值。如果可能存在负值,您需要使用:

SELECT CASE WHEN SUM(Column2) IS NOT NULL AND SUM(Column2) <> 0 
THEN
SUM(column1) / SUM(column2)
ELSE 0
END AS [Sum Division]
FROM @Table

这将对所有非 0 数字进行计算。但是,对于 0NULL 值,它只会返回 0。

关于mysql - SQL调优: division between the sum of two columns,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34517576/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com