Aggiornamento:la mia risposta originale era identica a quella di Quassnoi ma con 1 minuto di ritardo, quindi ho deciso di eliminarla e fare invece qualcosa di diverso. Questa query non presuppone che (id, date) sia univoco. Se è presente più di una voce, seleziona la più economica. Inoltre, somma anche il costo totale e restituisce anche quello che potrebbe anche essere utile.
SELECT id, SUM(price) FROM (
SELECT id, date, MIN(price) AS price
FROM Table1
GROUP BY id, date) AS T1
WHERE `date` BETWEEN '2010-08-05' AND '2010-08-07'
GROUP BY id
HAVING COUNT(*) = DATEDIFF('2010-08-07','2010-08-05') + 1