请求Wikidata查询协助:生成网球选手惯用手占比饼图数据
修正后的Wikidata查询语句(网球选手惯用手占比统计)
问题分析
原查询存在以下核心问题:
- 未将网球选手与惯用手属性关联,变量间无逻辑联系
- 错误地在同一子查询中同时匹配右手和左手,无法区分不同惯用手类型
- 缺少分组逻辑,无法按每种惯用手类型独立计算占比
修正后的查询语句
SELECT ?handLabel (COUNT(?player) AS ?count) (ROUND((COUNT(?player) / ?total) * 100) AS ?percentage) WHERE { # 匹配所有网球运动员(含子类) ?player wdt:P106/wdt:P279* wd:Q10833314. # 获取选手的惯用手属性 ?player wdt:P741 ?hand. # 限定统计的惯用手类型:右手、左手、双手 VALUES ?hand { wd:Q789447 wd:Q3039938 wd:Q20958766 } # 子查询计算符合条件的总选手数 { SELECT (COUNT(DISTINCT ?p) AS ?total) WHERE { ?p wdt:P106/wdt:P279* wd:Q10833314. ?p wdt:P741 ?h. VALUES ?h { wd:Q789447 wd:Q3039938 wd:Q20958766 } } } # 获取惯用手的多语言标签(优先中文) SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],zh". } } GROUP BY ?hand ?handLabel ?total ORDER BY DESC(?count)
查询说明
- 用
VALUES精准限定只统计右手(Q789447)、左手(Q3039938)、双手(Q20958766)三种类型 - 通过子查询计算有效样本总数,确保占比计算准确
GROUP BY按每种惯用手分组,独立统计数量与占比ROUND函数将百分比取整,适配饼图展示需求- 标签服务自动返回惯用手的中文名称,提升可读性
内容的提问来源于stack exchange,提问作者wily.x.x
相关产品推荐
相关产品推荐

