2016-07-09 37 views
1

我在我的SQL查询中使用SUM()和COUNT()寻求帮助:MySQL:Sum()和Count在一个查询中?

select s1_s2,count(s1_s2) as RES 
from city_user 
where s1_s2 in (select s1_s2 from city_user) 
group by s1_s2 

结果:Image Query Result

我想使之和()的RES列

是那可能吗?

+0

你认为究竟是如何文本项“01-02”可以总结? – Sumurai8

+0

@ Sumurai8,OP说*我想为RES列做出sum()* – Rahul

+0

这对我来说没有意义。除非OP只想计算数据库中有多少行。这只是'SELECT COUNT(*)FROM city_user;'。 – Sumurai8

回答

0

感谢您的回答

这就是我想要的东西:

看看这个图:result

此查询工作正常,我:

select s1_s2, 
count(s1_s2) as res, 
(select sum(res) as sum from (
    select s1_s2, count(s1_s2) as res from city_user group by s1_s2) city_user) as Sum_RES from city_user group by s1_s2 
0

也许你可以使用一个外部查询类似下面,再次你WHERE条件是没有意义的为您IN条款需要从同一个表s1_s2列的所有值,这将永远是真正的

select *, SUM(RES) as SUM_RES 
FROM (
select s1_s2, 
count(s1_s2) as RES 
from city_user 
group by s1_s2) xxx 
0

你的查询就没有什么感。 where s1_s2 in (select s1_s2 from city_user)只是写作where s1_s2 is not null的一种复杂且效率低下的方式。

RES列的总和基本上是所有行的计数在city_user,或在city_user至少那些行s1_s2不为空。对于需要在未来,包括你自己读您的查询的群众着想,让两个查询:

select s1_s2,count(s1_s2) as RES 
from city_user 
where s1_s2 is not null 
group by s1_s2 

select count(*) 
from city_user 
where s1_s2 is not null 
1

要选择计个人s1_s2的值以下查询可以帮助

select s1_s2, count(s1_s2) as res 
from city_user 
group by s1_s2; 

为了获得资源列总和以下查询可以帮助

select sum(res) as sum 
from 
    (select s1_s2, count(s1_s2) as res 
    from city_user 
    group by s1_s1) 
city_user; 

这是一样的

select count(s1_s2) as count 
from city_user; 

原因:这是因为你是基于s1_s2试图组列,并获得其计数并将其存储为Res列和计算其总和与表中s1_s2的行数相同。

+0

'select distinct(s1_s2)'不会阻止选择null,这个OP的嵌套查询似乎想要完成。 's1_s2'选择distinct(s1_s2)'显然不会有什么区别,因为如果s1_s2'的两个值相同,则应该将它们分组... – Sumurai8

+0

是啊!你是对的@ Sumurai8。编辑了我的答案。 – lsof