SQL-使用子查询的正数和负数之和
我有一个包含正数和负数的表格。我必须使用负数和的子查询找出正数和负数之和:SQL-使用子查询的正数和负数之和,sql,Sql,我有一个包含正数和负数的表格。我必须使用负数和的子查询找出正数和负数之和: SELECT SUM(numberColumn) FROM tableFoo WHERE numberColumn < 0 要将这两个查询与前面的两个查询QUERY1和QUERY2合并,请执行以下操作: SELECT (QUERY1), (QUERY2) 对于负数的总和: SELECT SUM(numberColumn) FROM tableFoo WHERE numberColumn < 0 要将这两
SELECT SUM(numberColumn) FROM tableFoo WHERE numberColumn < 0
要将这两个查询与前面的两个查询QUERY1和QUERY2合并,请执行以下操作:
SELECT (QUERY1), (QUERY2)
对于负数的总和:
SELECT SUM(numberColumn) FROM tableFoo WHERE numberColumn < 0
要将这两个查询与前面的两个查询QUERY1和QUERY2合并,请执行以下操作:
SELECT (QUERY1), (QUERY2)
您的问题不是很清楚,没有给出表名或列名,也不清楚为什么需要子查询如果可以避免,这绝对不是一个好主意。您可以使用“case”语句获得所需的值 下面计算正值和负值的数量
select sum (case when acolumn >= 0 then 1 else 0 end) as positive,
sum (case when acolumn < 0 then 1 else 0 end) as negative
from table
select sum (case when acolumn >= 0 then acolumn else 0 end) as positive,
sum (case when acolumn < 0 then acolumn else 0 end) as negative
from table
而以下是正值和负值的总和
select sum (case when acolumn >= 0 then 1 else 0 end) as positive,
sum (case when acolumn < 0 then 1 else 0 end) as negative
from table
select sum (case when acolumn >= 0 then acolumn else 0 end) as positive,
sum (case when acolumn < 0 then acolumn else 0 end) as negative
from table
您的问题不是很清楚,没有给出表名或列名,也不清楚为什么需要子查询如果可以避免,这绝对不是一个好主意。您可以使用“case”语句获得所需的值 下面计算正值和负值的数量
select sum (case when acolumn >= 0 then 1 else 0 end) as positive,
sum (case when acolumn < 0 then 1 else 0 end) as negative
from table
select sum (case when acolumn >= 0 then acolumn else 0 end) as positive,
sum (case when acolumn < 0 then acolumn else 0 end) as negative
from table
而以下是正值和负值的总和
select sum (case when acolumn >= 0 then 1 else 0 end) as positive,
sum (case when acolumn < 0 then 1 else 0 end) as negative
from table
select sum (case when acolumn >= 0 then acolumn else 0 end) as positive,
sum (case when acolumn < 0 then acolumn else 0 end) as negative
from table
通过使用CTECommon表表达式,我们可以得到输出
;WITH Psum_CTE
AS
( SELECT SUM(num) AS PositiveSum
FROM sample
WHERE num>=0
)
,Nsum_CTE
AS
(
SELECT SUM(num) AS NegativeSum
FROM sample
WHERE num<0
)
SELECT PositiveSum,NegativeSum
FROM Psum_CTE,Nsum_CTE
通过使用CTECommon表表达式,我们可以得到输出
;WITH Psum_CTE
AS
( SELECT SUM(num) AS PositiveSum
FROM sample
WHERE num>=0
)
,Nsum_CTE
AS
(
SELECT SUM(num) AS NegativeSum
FROM sample
WHERE num<0
)
SELECT PositiveSum,NegativeSum
FROM Psum_CTE,Nsum_CTE
您可以使用来分隔这些值:
select Sum( ( Sign( n ) + 1 ) / 2 * n ) as PositiveSum,
Sum( -( Sign( n ) - 1 ) / 2 * n ) as NegativeSum
from YourTableOData;
Sign根据输入值的符号返回1、0或-1。根据符号的不同,一些算术运算可以将其转换为1或0:对于所有正值,符号n+1/2为1,否则为0。请注意,检查负值符号n-1/2返回-1或0,因此为求反-以避免翻转正在求和的值的符号。您可以使用以下方法来分隔值:
select Sum( ( Sign( n ) + 1 ) / 2 * n ) as PositiveSum,
Sum( -( Sign( n ) - 1 ) / 2 * n ) as NegativeSum
from YourTableOData;
Sign根据输入值的符号返回1、0或-1。根据符号的不同,一些算术运算可以将其转换为1或0:对于所有正值,符号n+1/2为1,否则为0。请注意,检查负值符号n-1/2返回-1或0,因此为求反-以避免翻转要求和的值的符号。您尝试了什么?你遇到了什么问题?这个网站可以帮助你解决一个问题,但它不是一个获得免费解决方案的地方。我所说的免费,是指不费吹灰之力,也不了解你试过什么?你遇到了什么问题?这个网站可以帮助你解决一个问题,但它不是一个获得免费解决方案的地方。我所说的自由是指不需要努力和理解,或者更可能是一列其他0来满足老年退休金需求——因为他说他想要一笔金额,而不是一个计数,或者更可能是一列其他0来满足老年退休金需求——因为他说他想要一笔金额,而不是一个计数