- El primer caso, lo único que requieres es el rango, usando BETWEEN.
donde fecha_desde y fecha_hasta deberían ser los parámetros de entrada del SP.
- En el segundo caso es lo mismo, pero agregando un HAVING donde busques que el precio del plato sea igual al mayor precio. Se puede obtener también con una subconsulta sobre el valor del plato en el WHERE.
- El tercero es simplemente contar cuáles son las cantidades vendidas agrupadas por plato, ordenarlas de mayor a menor y listar sólo la primera.
En realidad, no parece ser demasiado complicado... ¿Qué es lo que te causa dudas?