mysql - 统计 ID 如何具有相同的连接组合?

标签 mysql sql

我有Join表,结果是这样的

IDA IDB QTY
A   3   1
A   4   1
A   5   1
B   3   1
B   4   1
C   3   2
D   3   2
E   3   1
F   4   1
G   3   1
G   4   1
G   5   1
H   3   3
H   4   3
H   5   3

我很困惑如何将具有相同 IDB 和 QTY 条件的 IDA 一起计算。

所以我想要的是:

Combination of IDB - QTY 

(3-1, 4-1, 5-1) = 2 from IDA (A and G)
(3-1) = 1 from IDA (E) 
(3-2) = 2 from IDA (C and D) 

所以基本上我想要计算具有相同 IDB 和 QTY 组合的 IDA。我应该做什么查询?我仍然不明白如何查询这个逻辑,谢谢。

编辑:

我想要的是一个查询的结果,我不会手动制作 IDB-QTY 组合的 Where 条件。 (所以基本上结果不是来自 Where 条件)

最佳答案

您可以使用 group_concat() 函数进行聚合

select group_concat( ida order by ida ) as grouped_letters, count(*) as count
  from
  (
   select ida, count( idb - qty ) as ct, sum( idb - qty ) as sm
     from tab
    group by ida
  ) q
 group by ct, sm
 order by ida;


+---------------+-----+
|grouped_letters|count|
+---------------+-----+
| B             |  1  | 
| C,D           |  2  |
| E             |  1  |
| F             |  1  |
| A,G           |  2  |
| H             |  1  |
+---------------+-----+

Demo

关于mysql - 统计 ID 如何具有相同的连接组合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56659179/

相关文章:

sql - 没有 WHERE 只有 ORDER BY 和 LIMIT 的 PostgreSQL 查询不使用索引

php - DateTimestamp 包含本月和年的 Laravel SQL 选择查询

MySQL 不会关闭 : "Stop server: ERROR! MySQL server PID file could not be found!"

MySQL 错误 - 您必须设置密码/密码哈希应该是 41 位十六进制数

mysql - 添加时间(hh :mm:ss) to a datetime field in SQL

mysql - 创建触发器 - DECLARE 时出错

sql - MySQL 外键数据库查询问题

java - 将文件中的数据加载到 hsqldb 中

mysql - 当 ORDER BY 被赋予一个数字时会发生什么?

sql - 如何仅在连续行上应用聚合函数?