联合中的SQL和行

Jav*_* C. 3 mysql sql union sum

我试图在UNION中从不同的SQL查询中获取两行,这可能吗?我所能实现的只是两个独立的行,但我无法对它们进行求和,DB引擎让我告诉*)FROM(SUM旁边的部分)附近的语法中有错误...

这是查询:

SELECT * FROM

(SELECT COUNT(*) as cntclients                                                                                               
   FROM                                                                                                                      
   (SELECT DISTINCT clientkey AS clients                                                                                     
      FROM <table>
     WHERE <conditions...>)                                                                                                                 
   ) AS clients                                                                                                              
) cntclients

UNION

(SELECT SUM(occurrences) AS cntclientsad                                                    
   FROM <table2>
   WHERE <conditions...>                                     
)
Run Code Online (Sandbox Code Playgroud)

这让我举个例子:

cntclients
----------
901
50
Run Code Online (Sandbox Code Playgroud)

在第一行中添加SELECT SUM(*)FROM而不是SELECT*FROM,并用括号括起两个查询只会引发我提到的错误...

我想要

cntclients <- or whatever name...
----------
951
Run Code Online (Sandbox Code Playgroud)

有什么想法应该如何运作?

Clo*_*use 11

您实际上不需要使用a UNION- 您可以手动将它们一起添加:

SELECT a.countKey + b.sumOccur as total
FROM (SELECT COUNT(DISINCT clientkey) as countKey
      FROM <table>
      WHERE <conditions>) as a
CROSS JOIN (SELECT SUM(occurrences) as sumOccur
            FROM <table2>
            WHERE <conditions>) as b
Run Code Online (Sandbox Code Playgroud)


Mit*_*eat 7

select SUM(cntcol)
from
(
    select count(*) as cntcol from sometables
    union all
    select SUM(occurrances) as cntcol from somemoretables
) ctquery
Run Code Online (Sandbox Code Playgroud)

  • 没有。如果您想对所有行求和,为什么需要任何类型的分组? (2认同)