Here's my attempt
DATA
mysql> select * from ajoo
-> order by user, recno;
+-------+----------+---------+---------+
| recno | user | v_score | rollavg |
+-------+----------+---------+---------+
| 6 | mina1111 | 4 | 3.2500 |
| 7 | mina1111 | 3 | 3.2000 |
| 8 | mina1111 | 2 | 3.2000 |
| 9 | mina1111 | 4 | 3.4000 |
| 10 | mina1111 | 5 | 3.6000 |
| 11 | mina1111 | 0 | 2.8000 |
| 12 | mina1111 | 1 | 2.5000 |
| 13 | mina1111 | 1 | 1.7500 |
| 14 | mina1111 | 1 | 0.7500 |
| 1 | nina1234 | 3 | NULL |
| 4 | nina1234 | 3 | 2.5000 |
| 5 | nina1234 | 4 | 3.0000 |
| 15 | nina1234 | 5 | NULL |
| 17 | nina1234 | 2 | 2.0000 |
| 22 | nina1234 | 2 | NULL |
+-------+----------+---------+---------+
QUERIES
--
-- create temp table a
--
CREATE TEMPORARY TABLE temp_a
SELECT a.recno
, a.v_score
, @count := CASE WHEN user = @prevu
THEN @count+1
ELSE 1
END AS reccount
, @prevu := user AS user
FROM ajoo a
JOIN (SELECT @count:=0, @prevu:=NULL) AS init
ORDER BY user, recno
;
--
-- create temp table b
-- (copy of temp_a)
--
CREATE TEMPORARY TABLE temp_b
SELECT * FROM temp_a
;
--
-- get results
--
SELECT
av.user
, avg5
, tot3
FROM
(
SELECT user
, AVG(v_score) as avg5
FROM (
SELECT a.user
, v_score
FROM temp_a a
JOIN (
SELECT user
, COUNT(*) AS maxrec
FROM ajoo
GROUP BY user
) max ON a.user = max.user
AND a.reccount > max.maxrec - 5
) tots
GROUP BY user
) av
JOIN
(
SELECT user
, SUM(v_score) as tot3
FROM (
SELECT b.user
, v_score
FROM temp_b b
JOIN (
SELECT user
, COUNT(*) AS maxrec
FROM ajoo
GROUP BY user
) max ON b.user = max.user
AND b.reccount > max.maxrec - 3
) tots
GROUP BY user
) tot
USING (user)
;
RESULTS
+----------+--------+------+
| user | avg5 | tot3 |
+----------+--------+------+
| mina1111 | 1.6000 | 3 |
| nina1234 | 3.2000 | 9 |
+----------+--------+------+