首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按查询对组的结果进行求和

问按查询对组的结果进行求和
EN

Stack Overflow用户
提问于 2016-12-19 05:14:05
回答 3查看 86关注 0票数 3

我在Server中运行了以下查询,该查询返回计数和城市:

代码语言:javascript
复制
SELECT 
    COUNT(*), city 
FROM 
    address 
WHERE
    address1 LIKE '%[0-9]%' 
    AND phone1 LIKE '%[0-9]%'
GROUP BY
    city
HAVING 
    COUNT(*) > 250
ORDER BY
    COUNT(*) DESC

我得到以下结果:

代码语言:javascript
复制
1232 Atlanta
345 Chicago

如何编写查询以获得计数的结果之和(在上面的示例中是1232+ 345 )?

我尝试过子查询,但由于组的原因,似乎导致了一些错误。我对SQL很陌生,我对一个糟糕的问题表示歉意。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-12-19 05:23:15

下面是使用SUM Over()窗口聚合函数的另一种方法

代码语言:javascript
复制
SELECT city,
       Count(*) AS total,
       Sum(Count(*))OVER() grand_total
FROM   address
WHERE  address1 LIKE '%[0-9]%'
       AND phone1 LIKE '%[0-9]%'
GROUP  BY city
HAVING Count(*) > 250 
票数 1
EN

Stack Overflow用户

发布于 2016-12-19 05:17:48

试试这个:

代码语言:javascript
复制
select sum(c)
from (
    select COUNT(*) c
    from address
    where address1 like '%[0-9]%'
        and phone1 like '%[0-9]%'
    group by city
    having count(*) > 250
    );
票数 4
EN

Stack Overflow用户

发布于 2016-12-19 05:19:20

您可以定义CTE,然后使用它:

代码语言:javascript
复制
WITH cte AS (
    SELECT city, COUNT(*) AS total
    FROM address
    WHERE address1 LIKE '%[0-9]%' AND
          phone1 LIKE '%[0-9]%'
    GROUP BY city
    HAVING COUNT(*) > 250
)

SELECT t.city,
       t.total,
       (SELECT SUM(total) FROM cte) AS grand_total
FROM cte t
ORDER BY t.total DESC

如果您只想要总计,那么使用以下查询:

代码语言:javascript
复制
SELECT SUM(total) AS grand_total
FROM cte
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41216089

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档