我想做这样的事情:
SELECT SUM(COL1) / SUM(COL2) FROM table_name
我的问题:
您可以根据您熟悉的数据库引擎回答此问题。
(我已经对问题1有了很多优秀的答案,但似乎没有人知道问题2的答案。)
答案 0 :(得分:1)
以下是问题1的SQL Server解决方案。
SELECT COALESCE((SUM(COL1) / NULLIF(SUM(COL2),0)),0) FROM table_name
我不知道问题2的答案,但我可以说,我从来没有看到任何其他替代方式,您已经通过这种方式编写了查询,我可以安全地假设这是查询查询的最有效方式。
答案 1 :(得分:1)
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值。
修改强>
这假设您在column2中不会有负值。如果可能出现负值,您可能希望使用:
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 NUMBERS 进行计算。但是,对于 0 或 NULL 值,它只会返回0.
答案 2 :(得分:0)
如果MySQL问题1是答案:
select CASE WHEN IFNULL(sum(COL2),0) <> 0 THEN (IFNULL(sum(COL1),0) / sum(COL2) ) ELSE 0 END from table_name ;
答案 3 :(得分:0)
您也可以简单地使用三元运算符。其他程序员很容易理解,只是阅读。几乎每个数据库引擎都有支持。
SELECT IF(SUM(COL2)= 0,SUM(COL1)/ SUM(COL2), - 1)FROM table_name