たとえば、すべての範囲値がコンマ区切りのリストではなく単一の範囲であると仮定すると、いずれかの側の値を取得し、算術演算を使用して手動で平均化する ために、いくつかの部分文字列操作を実行する必要があります。は集計関数であり、この目的には使用できません。-
AVG()
CREATE TABLE HrsPerWk_avg
SELECT
CrsTitle,
/* Extract the min/max values with substring operations, add them, divide by 2 */
/* SUBSTRING_INDEX() gets the first value before - */
(SUBSTRING_INDEX(HoursPerWkincClass, '-', 1) +
/* SUBSTR() and LOCATE() get the second value after - */
/* Both are added and divided by 2 */
SUBSTR(HoursPerWkincClass, LOCATE('-', HoursPerWkincClass)+1)) / 2
FROM FCQ
GROUP BY CrsTitle
サンプルは次のとおりです:http ://sqlfiddle.com/#!2/96510/2
アップデート
上記のような値をサポートするには、条件付きで16+
そのような値を一致させ、部分文字列操作でを削除する必要があります。LOCATE()
+
SELECT
CrsTitle,
CASE
/* Remove + if present */
WHEN LOCATE('+', HoursPerWkincClass) >= 1 THEN REPLACE(HoursPerWkincClass, '+', '')
ELSE
/* Otherwise use the range finding stuff from above... */
(SUBSTRING_INDEX(HoursPerWkincClass, '-', 1) +
SUBSTR(HoursPerWkincClass, LOCATE('-', HoursPerWkincClass)+1)) / 2
END AS the_avg
FROM FCQ
http://sqlfiddle.com/#!2/bdd43/2