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 |
+-----------+------+