Sumas los totales por ciudad de tu reporte agrupado, y el resultado no coincide con SUM(compras) de toda la tabla.
La suma de los totales de cada grupo debe ser igual al total general, si nada se perdió en el camino
Un WHERE que filtró de más, o filas con NULL en la columna de agrupar, son las causas más comunes
GROUP BY trata todos los NULL de una columna como UN SOLO grupo aparte, no los descarta
Cuadrar totales es la misma prueba de siempre, aplicada a SQL
Es la misma idea de comparar el resumen contra la tabla original que ya viste al hablar de tablas dinámicas: aquí se hace contra un GROUP BY.