SQL:计算“组”中guid的出现次数

问题描述

我在 SQL 中有一个家庭成员关系,我需要知道同一个家庭成员(一个 guid)是否多次出现。家人(也是向导)

我如何计算每个家庭 guid 中的家庭成员 guid - 或者甚至更好地只返回那些超过一个的家庭成员(意味着同一个人两次或更多)?

例如

家庭成员 家人
7B815121-7D6F-EB11-A812-000D3A22E46A 9617390F-7D6F-EB11-A812-000D3A22E46A
7B815121-7D6F-EB11-A812-000D3A22E46A 9617390F-7D6F-EB11-A812-000D3A22E46A
1713A8C1-2E70-EB11-A812-000D3A22E46A 9617390F-7D6F-EB11-A812-000D3A22E46A
A773DFA2-8643-EB11-A812-000D3AACBC1D 9617390F-7D6F-EB11-A812-000D3A22E46A
A773DFA2-8643-EB11-A812-000D3AACBC1D 0B80A44B-3470-EB11-A812-000D3A22E46A
CB0647AC-4470-EB11-A812-000D3A22E46A 0B80A44B-3470-EB11-A812-000D3A22E46A

这里我应该只为 '7B815121-7D6F-EB11-A812-000D3A22E46A' 计数 2,因为其他匹配项来自不同的家族 GUID

解决方法

以下应返回每个 familymember 出现多次的 family 的计数:

SELECT familymember,COUNT(*)
FROM table
GROUP BY family,familymember 
HAVING COUNT(*) > 1

给出:

家庭成员 COUNT(*)
7B815121-7D6F-EB11-A812-000D3A22E46A 2

每个 family 的完整计数(不仅仅是重复)只是:

SELECT family,familymember,familymember
家人 家庭成员 COUNT(*)
0B80A44B-3470-EB11-A812-000D3A22E46A A773DFA2-8643-EB11-A812-000D3AACBC1D 1
0B80A44B-3470-EB11-A812-000D3A22E46A CB0647AC-4470-EB11-A812-000D3A22E46A 1
9617390F-7D6F-EB11-A812-000D3A22E46A 1713A8C1-2E70-EB11-A812-000D3A22E46A 1
9617390F-7D6F-EB11-A812-000D3A22E46A 7B815121-7D6F-EB11-A812-000D3A22E46A 2
9617390F-7D6F-EB11-A812-000D3A22E46A A773DFA2-8643-EB11-A812-000D3AACBC1D 1
,

试试这个

select Familymember,count(Family) as count from table_name group by Familymember,Family;

此查询的作用是使用两列进行分组,这意味着您将计算两列相同的行。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...