Agrupaciones por varias columnas

En ocasiones vamos a querer agrupar por más de una columna. Por ejemplo, si quisiera saber la cantidad de copias de cada película en cada tienda:

SELECT i.store_id, f.title, COUNT(*) as copies
FROM
    inventory i
    INNER JOIN film f ON f.film_id= i.inventory_id
GROUP BY i.store_id, f.film_id;

El número de películas diferentes que hay en cada país y en cada ciudad:

SELECT 
  c.country_id, c.city_id, count(distinct i.film_id)
FROM city c 
  JOIN address a USING (city_id) 
  JOIN store s USING (address_id)
  JOIN inventory i USING (store_id)
GROUP BY
  c.country_id, c.city_id;

Número de películas diferentes que hay en cada categoría y de cada lenguaje:

SELECT
  category_id, language_id, COUNT(*)
FROM film f
  JOIN film_category fc USING(film_id)
  JOIN language l USING (language_id)
GROUP BY
  category_id, language_id;

Last updated