使用 SQL 从非结构化数据高效计算成绩百分比
在计算成绩百分比分布时,将成绩作为自由文本存储在数据库中会带来挑战。本文提供了 SQL 解决方案来计算所有成绩的这些百分比,即使没有预定义的成绩值也是如此。
用于百分比计算的 SQL 查询
此 SQL 查询利用 over()
函数跨唯一等级值进行有效的百分比计算:
<code class="language-sql">SELECT Grade, COUNT(*) * 100.0 / SUM(COUNT(*)) OVER () FROM MyTable GROUP BY Grade;</code>
over()
函数计算整个表的总行数,无需指定所有可能的成绩即可进行百分比计算。
替代 SQL 查询(适用于没有 over()
功能的数据库)
对于缺少 over()
函数的数据库,此替代查询使用子查询:
<code class="language-sql">SELECT Grade, COUNT(*) * 100.0 / (SELECT COUNT(*) FROM MyTable) FROM MyTable GROUP BY Grade;</code>
此方法使用子查询来获取总行数,然后计算百分比。
重要提示:当成绩数据存储为单字符值(例如“A”、“B”、“C”)时,这些解决方案可以准确计算百分比。 非结构化文本中更复杂的成绩格式需要在应用这些 SQL 查询之前进行预处理以提取成绩值。
以上是SQL 如何从非结构化文本数据计算成绩百分比分布?的详细内容。更多信息请关注PHP中文网其他相关文章!