Что, вероятно, работает лучше всего, это разделить это на два запроса, один для загрузки средней цены и суммы цен на человека:
SELECT
AVG(price), SUM(price)
FROM `personals`
WHERE personal_id = '1234'
GROUP BY name;
и второй максимум, который вы хотите знать:
SELECT
MAX(price)
FROM `personals`
WHERE personal_id = '1234'
GROUP BY name, to_days(thedate) - to_days('2009-06-13');
Если вы действительно хотите, чтобы все столбцы были в одном запросе, используйте первый подзапрос (может быть не слишком эффективным в больших базах данных)
SELECT
MAX(price),
AVG(price),
SUM(price)
FROM `personals`
LEFT JOIN (
SELECT
AVG(price), SUM(price), name
FROM `personals`
WHERE personal_id = '1234' -- # this line is optional
GROUP BY name
) totals
ON totals.name = personals.name
WHERE personal_id = '1234'
GROUP BY name, to_days(thedate) - to_days('2009-06-13');