Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.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
Php MySQL:在一个查询中求和()和计数?_Php_Mysql_Sql - Fatal编程技术网

Php MySQL:在一个查询中求和()和计数?

Php MySQL:在一个查询中求和()和计数?,php,mysql,sql,Php,Mysql,Sql,我正在SQL查询中使用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 结果: 我想为RES列求和 这可能吗?可能您可以使用下面这样的外部查询,您的WHERE条件同样没有意义,因为IN子句从同一个表中获取列s1\u s2的所有值,该值始终为真 select *, SUM(RES) as SUM

我正在SQL查询中使用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
结果:

我想为RES列求和


这可能吗?

可能您可以使用下面这样的外部查询,您的WHERE条件同样没有意义,因为IN子句从同一个表中获取列s1\u s2的所有值,该值始终为真

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

你的询问毫无意义。其中,从city_user中选择s1_s2中的s1_s2是一种复杂且非常低效的写入方式,其中s1_s2不为空

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

要选择单个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;
要获取res列的总和,以下查询可能会有所帮助

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的行数相同。

谢谢您的回答

这就是我想要的:

看这张照片:

这个查询对我来说很好:

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

您认为01-02文本条目的总和是多少?@Sumurai8,OP说我想对RES列进行总和,这对我来说毫无意义。除非OP只想计算数据库中有多少行。这就是从city_user;中选择COUNT*;。我想你是想得到A点和B点之间的路径数,就像图中两个节点之间的路径一样。。我说得对吗?否则,您可以详细说明一下这一点,就像您希望通过查询实现的一样。.select distincts1_s2不会阻止选择null,OP的嵌套查询似乎希望实现这一点。选择distincts1_s2并按s1_s2分组显然不会产生任何差异,因为如果s1_s2的两个值相同,则应将它们分组…耶!!你说得对@Sumurai8。编辑了我的答案。