使用 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中文網其他相關文章!