从查询中获取不平衡行

vwkv1x7d  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(389)

场景是dd是有自己id的存款明细,d是实际存款。细节包括对存款进行的活动。

|-------------|-----------|--------------|--------------|
|      DD     |     D     |    AMOUNT    |    MEMBER    |
|-------------|-----------|--------------|--------------|
|       1     |     1     |    1500.00   |       2      |
|-------------|-----------|--------------|--------------|
|       2     |     1     |   -1500.00   |       2      |
|-------------|-----------|--------------|--------------|
|       3     |     1     |     350.00   |       4      |
|-------------|-----------|--------------|--------------|
|       4     |     2     |    1000.00   |       5      |
|-------------|-----------|--------------|--------------|
|       5     |     2     |   -1000.00   |       5      |
|-------------|-----------|--------------|--------------|
|       6     |     3     |     100.00   |       5      |
|-------------|-----------|--------------|--------------|
|       7     |     3     |     -10.00   |       5      |
|-------------|-----------|--------------|--------------|

目标是只获取第3行,因为它包含不平衡金额的详细信息。我的查询版本排除平衡金额

SELECT dd,d,amount,SUM(amount) FROM test 
group by dd
having sum(amount)>0

它似乎不起作用。另外,sql fiddle已经关闭,所以我无法给出一个正确的例子。我找到了db fiddle,但上面的示例似乎并没有在这里执行。
还有谁能告诉我这是什么类型的查询?
编辑
预期产量:

|-------------|-----------|--------------|--------------|
|      DD     |     D     |    AMOUNT    |    MEMBER    |
|-------------|-----------|--------------|--------------|
|       1     |     1     |    1500.00   |       2      |
|-------------|-----------|--------------|--------------|
|       2     |     1     |   -1500.00   |       2      |
|-------------|-----------|--------------|--------------|
|       3     |     1     |     350.00   |       4      |
|-------------|-----------|--------------|--------------|
|       6     |     3     |     100.00   |       5      |
|-------------|-----------|--------------|--------------|
|       7     |     3     |     -10.00   |       5      |
|-------------|-----------|--------------|--------------|
gk7wooem

gk7wooem1#

尝试此查询:

select * from tbl
where d in (
    select d from tbl
    group by d
    having sum(amount) <> 0
);

子查询将只返回 D s、 外部查询将过滤掉 D 基于子查询的结果。

相关问题