Soluci贸n

Base de datos

Vista general

Queremos encontrar el total de seguidores para cada usuario en este problema.

(user_id, follower_id) es la llave primaria para esta tabla.

Lo cual implica que tendremos una combinaci贸n 煤nica de user_id y follower_id. Por ejemplo, la siguiente tabla contiene valores corruptos:

user_id follower_id
1 2
1 2

La misma combinaci贸n de user_id y follower_id no puede ocurrir multiples veces.

En la siguiente tabla, el usuario con id = 1 tiene tres seguidores.

user_id follower_id
1 2
1 3
1 4
3 2
3 5

En seguida, nos aseguramos que los usuarios en nuestro resultado se ordenen por user_id en orden ascendente.

Para este ejemplo, el resultado debe ser el siguiente:

+---------+-----------------+
| user_id | followers_count |
+---------+-----------------+
|    1    |        3        |
|    3    |        2        |
+---------+-----------------+

Estrateg铆a: COUNT y GROUP BY

Intuici贸n

Esencialmente necesitamos contar el n煤mero de veces que un user_id particular aparece en la columna user_id y este recuento ser谩 igual al recuento de seguidores. Esto se debe a que cada combinaci贸n (user_id, follower_id) es 煤nica. Podemos lograr esto con la funci贸n COUNT para contar las apariciones de un 煤nico user_id. Recuerde que COUNT es una funci贸n de agregaci贸n, por lo que tenemos que indicarle por qu茅 campo debe realizar la agregaci贸n. Esto puede hacerse utilizando la cl谩usula GROUP BY. Como queremos imprimir el user_id y su conteo en la tabla, debemos tambi茅n agrupar por user_id.

Por 煤ltimo, usaremos la cl谩usula ORDER BY para ordenar el resultado por user_id.

Algoritmo
  1. SELECT user_id, COUNT(user_id) AS followers_count: Esta parte especifica las columnas que se seleccionar谩n en el conjunto de resultados. En este caso, queremos recuperar el user_id y el recuento de seguidores de cada usuario. La funci贸n COUNT(user_id) se utiliza para contar el n煤mero de filas de la tabla de seguidores, que representa el n煤mero de seguidores de un usuario concreto. El resultado de este recuento se denomina followers_count para ajustarse a los requisitos de salida del problema.

  2. FROM followers: Esta parte especifica la tabla que contiene la informaci贸n que estamos consultando.

  3. GROUP BY user_id: Esta parte agrupa las filas en base a la columna user_id. Al usar GROUP BY, la consulta calcular谩 el total de seguidores para cada user_id 煤nico. Como resultado tendremos una sola fila para cada user_id.

  4. ORDER BY user_id ASC: Esta parte ordena el resultado en base a la columna user_id en orden ascendente. ASC significa orden ascendente. Como nota: el orden por default que usar la cl谩usula ORDER BY es ascendente. De modo que si quitamos ASC, la consulta sigue funcionando como se espera.

Implementaci贸n
SELECT user_id, COUNT(user_id) AS followers_count
FROM followers
GROUP BY user_id
ORDER BY user_id ASC;

slackmart blog 漏 2024