You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SQL数据集中统计拥有相同技能组合的用户分组及人数?

解决步骤

1. SQL统计技能组合及用户数

首先要把每个用户的技能拼接成唯一的组合字符串,再按该字符串分组统计用户数量。以下是不同SQL方言的实现:

MySQL/MariaDB

SELECT 
  GROUP_CONCAT(Skill ORDER BY Skill SEPARATOR ' & ') AS skill_combination,
  COUNT(DISTINCT User) AS user_count
FROM your_table_name
GROUP BY skill_combination
ORDER BY user_count DESC;

PostgreSQL

SELECT 
  STRING_AGG(Skill::TEXT, ' & ' ORDER BY Skill) AS skill_combination,
  COUNT(DISTINCT "User") AS user_count
FROM your_table_name
GROUP BY skill_combination
ORDER BY user_count DESC;

SQL Server

SELECT 
  skill_combination,
  COUNT(DISTINCT "User") AS user_count
FROM (
  SELECT 
    "User",
    STUFF((
      SELECT ' & ' + Skill
      FROM your_table_name t2
      WHERE t2."User" = t1."User"
      ORDER BY Skill
      FOR XML PATH(''), TYPE
    ).value('.', 'NVARCHAR(MAX)'), 1, 3, '') AS skill_combination
  FROM your_table_name t1
  GROUP BY "User"
) AS user_skills
GROUP BY skill_combination
ORDER BY user_count DESC;

说明:ORDER BY Skill是为了让技能顺序不同的相同组合(比如1&2和2&1)被视为同一组,避免重复统计。

2. 生成指定格式的输出

如果需要直接生成类似Group A {Skills: 1 & 2 & 7} 有10人的格式,可以用脚本处理SQL查询结果:

Python处理示例

假设已将SQL结果导出为CSV文件(列名:skill_combination, user_count),执行以下代码:

import csv

with open('skill_groups.csv', 'r', encoding='utf-8') as f:
    reader = csv.DictReader(f)
    groups = sorted(reader, key=lambda x: int(x['user_count']), reverse=True)
    for idx, group in enumerate(groups, 1):
        print(f"Group {chr(64+idx)} {{Skills: {group['skill_combination']}}} 有{group['user_count']}人")

3. 可视化方案

由于技能组合可能数量较多,建议优先展示用户数量排名靠前的组合,避免图表拥挤:

条形图(Python + Matplotlib)

import matplotlib.pyplot as plt
import pandas as pd

# 读取数据,取前10个用户数最多的组合
df = pd.read_csv('skill_groups.csv')
top_groups = df.nlargest(10, 'user_count')

plt.figure(figsize=(12, 6))
plt.barh(top_groups['skill_combination'], top_groups['user_count'], color='#4CAF50')
plt.xlabel('用户数量')
plt.ylabel('技能组合')
plt.title('技能组合对应的用户数量排名(Top 10)')
plt.gca().invert_yaxis()  # 让数量多的组合显示在上方
plt.show()

无代码工具方案

如果不想写代码,可使用Tableau、Power BI或Excel:

  • 将SQL查询结果导入工具
  • 选择技能组合作为维度,用户数量作为度量
  • 生成条形图、树状图或气泡图,直观展示不同组合的用户规模

内容的提问来源于stack exchange,提问作者Rich Kramp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 06:41:08