不可能ではなく、ただ複雑です。 を使用できますSTR_TO_DATE
文字列をDATETIME
に変換します オブジェクト。そこからMONTH
月番号を取得します。ただし、(@ DRappがコメントしたように)DATETIME
を保存する必要があることに注意してください。 VARCHAR
ではなく、ネイティブ形式の値 、その後、STR_TO_DATE
を処理する必要はありません。 。月番号を取得したら、条件付き集計を使用して、必要な結果を取得できます。
SELECT name,
COALESCE(AVG(CASE WHEN mth = 1 THEN PTS END), 0) AS Jan,
COALESCE(AVG(CASE WHEN mth = 2 THEN PTS END), 0) AS Feb,
COALESCE(AVG(CASE WHEN mth = 3 THEN PTS END), 0) AS Mar,
COALESCE(AVG(CASE WHEN mth = 4 THEN PTS END), 0) AS Apr,
-- repeat for May to November
COALESCE(AVG(CASE WHEN mth = 12 THEN PTS END), 0) AS `Dec`,
AVG(PTS) AS AVG
FROM (
SELECT name, PTS AS PTS, MONTH(STR_TO_DATE(DATE, '%a %b %e %H:%i:%s %Y')) AS mth
FROM data
) d
GROUP BY name
出力(サンプルデータ用):
name Jan Feb Mar Apr Dec AVG
Chris 0 4 0 2 0 3
John 0 0 0 2.6667 0 2.6667