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

R中SQL查询报错:如何统计员工的项目、工具、语言数量?

解决R中SQL查询员工多维度统计的问题

你的原SQL存在几个语法和逻辑错误,导致无法运行:

  • 字段引用顺序错误:Name.worker 应该是 表名.字段名(比如worker.name,假设表名为worker,姓名字段为name)
  • 聚合函数用法错误:count(Name).project 不符合SQL语法,不能用这种方式统计不同维度的数量
  • GROUP BY的关联逻辑缺失:没有处理同一员工对应多条项目/工具/语言记录的情况

以下是两种常见表结构下的正确解决方案:

情况1:所有数据存储在同一张表

如果你的worker表中每条记录对应员工的一个项目/工具/语言(即同一员工有多条重复姓名的记录),需要用COUNT(DISTINCT)去重统计:

SELECT 
  name AS worker,
  COUNT(DISTINCT project) AS 参与项目数,
  COUNT(DISTINCT tool) AS 掌握工具数,
  COUNT(DISTINCT language) AS 会说语言数
FROM worker
GROUP BY name

情况2:数据拆分到关联表(规范数据库设计)

如果你的数据按业务拆分到不同表(比如workers存员工基础信息,worker_projects存员工-项目关联,worker_tools存员工-工具关联,worker_languages存员工-语言关联),需要用LEFT JOIN关联后统计:

SELECT 
  w.name AS worker,
  COUNT(DISTINCT wp.project_name) AS 参与项目数,
  COUNT(DISTINCT wt.tool_name) AS 掌握工具数,
  COUNT(DISTINCT wl.language_name) AS 会说语言数
FROM workers w
LEFT JOIN worker_projects wp ON w.worker_id = wp.worker_id
LEFT JOIN worker_tools wt ON w.worker_id = wt.worker_id
LEFT JOIN worker_languages wl ON w.worker_id = wl.worker_id
GROUP BY w.worker_id, w.name

在R中执行查询的示例

使用DBI包连接数据库并执行查询:

library(DBI)
# 替换为你的数据库连接方式(比如RSQLite、RPostgres等)
con <- dbConnect(RSQLite::SQLite(), dbname = "your_database.db")

# 选择对应情况的SQL语句
sql_query <- "
SELECT 
  name AS worker,
  COUNT(DISTINCT project) AS 参与项目数,
  COUNT(DISTINCT tool) AS 掌握工具数,
  COUNT(DISTINCT language) AS 会说语言数
FROM worker
GROUP BY name
"

# 执行查询并获取结果
result <- dbGetQuery(con, sql_query)
print(result)

# 关闭连接
dbDisconnect(con)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 14:40:29