Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.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
Mysql 如何使用;计数“;加上;分组方式&&引用;其中;_Mysql_Sql_Count_Group By - Fatal编程技术网

Mysql 如何使用;计数“;加上;分组方式&&引用;其中;

Mysql 如何使用;计数“;加上;分组方式&&引用;其中;,mysql,sql,count,group-by,Mysql,Sql,Count,Group By,查询结果: SELECT `loanac`.`id`, `loanac`.`area` FROM loanac, loantrans WHERE `loanac`.`lacc`=`loantrans`.`account` GROUP BY `loanac`.`lacc` HAVING SUM(IFNULL(`loantrans`.`out`,0)) > SUM(IFNULL(`loantrans`.`in`,0)) 这个查询为我提供了lacc的所有id和区域,这些id和区域都是out>i

查询结果:

SELECT `loanac`.`id`, `loanac`.`area`
FROM loanac, loantrans
WHERE `loanac`.`lacc`=`loantrans`.`account`
GROUP BY `loanac`.`lacc`
HAVING SUM(IFNULL(`loantrans`.`out`,0)) > SUM(IFNULL(`loantrans`.`in`,0))
这个查询为我提供了lacc的所有id和区域,这些id和区域都是out>in,这个查询是正常的,我只需要从这个查询中获得按区域的输出组和计数id。有人能帮忙吗

我想要的是

----------------------------------------
id      area
----------------------------------------
5       A
165     C
166     C
167     C
232     D
91      B
注:条件不变
目标:要按(loanac.area)在相同条件下查找/计算(loanac.id)分组的数量

我想您需要这样的东西。将
区域
按行添加到您的组中,并使用COUNT(id)获取交易计数

----------------------------------------
COUNT(id)      GROUP BY(area)
----------------------------------------
1               A
5               B
9               C
1               D
选择计数(`loanac`.`id`), 将SUM(IFNULL(`loantrans`.`out`,0))作为transout, 作为transin的SUM(IFNULL(`loantrans`.`in`,0)), `loanac`.`区域`, `loanac`.`lacc` 来自loanac,loantrans 其中'loanac`.'lacc`='loantrans`.'account` 按“loanac”.“lacc”.“loanac”.“区域”分组` 有transout>transin的 编辑:提供您想要的输出

SELECT count(`loanac`.`id`), SUM(IFNULL(`loantrans`.`out`,0)) AS transout, SUM(IFNULL(`loantrans`.`in`,0)) AS transin, `loanac`.`area`, `loanac`.`lacc` FROM loanac, loantrans WHERE `loanac`.`lacc`=`loantrans`.`account` GROUP BY `loanac`.`lacc`,`loanac`.`area` HAVING transout > transin 选择计数(loanac.id),`loanac`.`area` 来自loanac,loantrans 其中'loanac`.'lacc`='loantrans`.'account` 按“loanac”.“lacc”.“loanac”.“区域”分组` 具有SUM(IFNULL(`loantrans`.`out`,0))>SUM(IFNULL(`loantrans`.`in`,0))
我认为这符合你的要求:

SELECT count(loanac.id), `loanac`.`area` FROM loanac, loantrans WHERE `loanac`.`lacc`=`loantrans`.`account` GROUP BY `loanac`.`lacc`,`loanac`.`area` HAVING SUM(IFNULL(`loantrans`.`out`,0)) > SUM(IFNULL(`loantrans`.`in`,0)) 上面,我有一个groupby
loanac.area
,因为这就是原始示例的样子。如果要按
loanac.lacc
分组,只需将上面的
groupby
更改为,
groupby loanac.lacc

编辑:加载注释中链接的测试数据库并运行查询将产生:

SELECT COUNT(id), area FROM
  (SELECT id, area FROM loanac
     JOIN loantrans ON loanac.lacc = loantrans.account
     GROUP BY loanac.lacc
     HAVING SUM(IFNULL(loantrans.out, 0)) > SUM(IFNULL(loantrans.in,0))) t
  GROUP BY area;

我想我不能清楚地理解,信息已经更新了。请你再看一看并提出建议好吗?兄弟,按照你的指示试过了,但该地区并没有分组。这是为你上传的数据库。请你看一下好吗<代码>从loanac内部连接loantrans ON loanac.lacc=loantrans.account不要使用老式的连接语法,按照您的指示进行尝试,但此查询不支持“HAVING SUM(loantrans.out)>SUM(loantrans.in)”条件。有什么建议吗?@Machine我更新了答案并插入
IFNULL
。我不确定如果没有它它是否会起作用。兄弟,现在不是按id分组,我需要按id分组,然后按区域分组。这是我上传给你的数据库,请你看一下@机器在这种情况下,“按id分组”是什么意思?
id
不会出现在您的示例中,因为您只是显示了每个区域的多个不同id的计数。您的示例显示了按区域分组和排序。也许你可以展示一个更具说明性的例子。兄弟,请查看上传到这里的截图
+-----------+------+
| COUNT(id) | area |
+-----------+------+
|        86 | A    |
|        81 | B    |
|        64 | C    |
|        66 | D    |
|        20 | E    |
|         3 | F    |
+-----------+------+