如何在含数千条记录的SQL列中定位正确的指标名称?
如何在SQL大表中查找对应指标名称?
练习背景
我正在学习数据分析用的SQL,今日的练习任务是:
统计2015年全球各地区符合中等教育官方年龄的人口数量,要求排除地区信息缺失的行,用SUM(value)计算各地区总人口,并按人口数从高到低排序。
我已经写出了对应的SQL代码,但遇到一个问题:这次练习是直接给定了指标名称Population of the official age for secondary education, both sexes (number),但如果没有这个提示,我该怎么在有数千条目的indicator_name列里找到正确的名称?
我的SQL代码
SELECT summary.region, SUM(edu.value) AS secondary_edu_population FROM `bigquery-public-data.world_bank_intl_education.international_education` AS edu INNER JOIN `bigquery-public-data.world_bank_intl_education.country_summary` AS summary ON edu.country_code = summary.country_code WHERE summary.region IS NOT NULL -- 若未给定该名称,如何找到对应指标? AND edu.indicator_name = 'Population of the official age for secondary education, both sexes (number)' AND edu.year = 2015 GROUP BY summary.region ORDER BY secondary_edu_population DESC
实用查找方法
1. 关键词模糊匹配
用LIKE或正则匹配核心关键词,比如围绕“中等教育(secondary education)”“官方年龄(official age)”“人口(population)”这些词缩小范围:
-- 用LIKE做模糊匹配 SELECT DISTINCT indicator_name FROM `bigquery-public-data.world_bank_intl_education.international_education` WHERE indicator_name LIKE '%secondary education%' AND indicator_name LIKE '%official age%' AND indicator_name LIKE '%population%';
如果是BigQuery,用正则表达式能更灵活处理关键词顺序:
SELECT DISTINCT indicator_name FROM `bigquery-public-data.world_bank_intl_education.international_education` WHERE REGEXP_CONTAINS(indicator_name, r'secondary education.*official age.*population|population.*official age.*secondary education');
2. 按指标分类前缀筛选
世界银行的教育数据指标命名有规律,先提取前缀看分类,快速定位相关指标组:
-- 提取指标名称的前缀分类 SELECT DISTINCT SPLIT(indicator_name, ',')[OFFSET(0)] AS indicator_category FROM `bigquery-public-data.world_bank_intl_education.international_education` ORDER BY indicator_category;
找到和人口、教育年龄相关的分类后,再进一步筛选具体指标。
3. 结合指标代码验证
数据集里的indicator_code通常是标准化的,不会像名称那样有长描述,可同时查看代码和名称,方便识别和后续复用:
-- 同时查看指标代码和名称 SELECT DISTINCT indicator_code, indicator_name FROM `bigquery-public-data.world_bank_intl_education.international_education` WHERE indicator_name LIKE '%secondary education%' AND indicator_name LIKE '%population%';
后续查询用indicator_code更可靠,避免名称拼写或格式变化的问题。
4. 抽样数据辅助判断
如果不确定找到的指标是否正确,抽样几条数据看数值范围——人口数据通常是大数字,和入学率这类百分比指标区分开:
-- 抽样查看匹配到的指标数据 SELECT indicator_name, value, year, country_code FROM `bigquery-public-data.world_bank_intl_education.international_education` WHERE indicator_name LIKE '%secondary education%' AND indicator_name LIKE '%population%' LIMIT 10;
通过数值大小和描述,确认是否是你需要的“人口数量”指标,而非其他相关统计项。
内容的提问来源于stack exchange,提问作者Viktor Neiwert
相关产品推荐
相关产品推荐

