Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL-使用子查询的正数和负数之和_Sql - Fatal编程技术网

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来满足老年退休金需求——因为他说他想要一笔金额,而不是一个计数