Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: thebus4k en 18 Mayo 2020, 17:21 pm



Título: Suma y media con join en SQL
Publicado por: thebus4k en 18 Mayo 2020, 17:21 pm
Hola a todos.
Tengo que realizar las siguientes sentencias en sql y no encuentro la manera de combinar las operaciones con el join que debo hacer.

Teniendo las dos tablas siguientes:
El campo COUNTRYCODE de la tabla CITY está relacionado con el campo CODE de la tabla COUNTRY
(https://imageshack.com/i/pmj5nvQoj)
(https://imageshack.com/i/pmNYYli5j)


Las sentencias son las siguientes:
-Sentencia SQL que devuelva la población total del continente europeo, es decir, sumar la población de todas sus ciudades. En este caso el campo CONTINENT de la tabla COUNTRY tiene que ser "Europa".
-La sentencia SQL que devuelva para cada continente la media de población que hay entre todas sus ciudades.

Espero que alguien pueda ayudarme.
Un saludo.


Título: Re: Suma y media con join en SQL
Publicado por: EdePC en 18 Mayo 2020, 18:42 pm
- Vas armando tus consultas por partes, de lo más sencillo a lo más complejo que se une al final.

- Primero muestras el total de población general:

Código
  1. SELECT SUM(population) FROM city

- Luego haces otra consulta que muestre todos los paises del continente Europa:

Código
  1. SELECT * FROM country
  2. WHERE continent = 'Europa'

- Al final fusionas ambas consultas:

Código
  1. SELECT SUM(city.population) FROM city
  2. INNER JOIN country ON city.countrycode = country.code
  3. WHERE country.continent = 'Europa'

- Sigue la misma metodología para el segundo ejercicio, primero muestra la media del total de poblacion de todas las ciudades, luego muestra todos los paises agrupados por continentes, al final unes ambas consultas y listo.


Título: Re: Suma y media con join en SQL
Publicado por: thebus4k en 18 Mayo 2020, 19:11 pm
- Vas armando tus consultas por partes, de lo más sencillo a lo más complejo que se une al final.

- Primero muestras el total de población general:

Código
  1. SELECT SUM(population) FROM city

- Luego haces otra consulta que muestre todos los paises del continente Europa:

Código
  1. SELECT * FROM country
  2. WHERE continent = 'Europa'

- Al final fusionas ambas consultas:

Código
  1. SELECT SUM(city.population) FROM city
  2. INNER JOIN country ON city.countrycode = country.code
  3. WHERE country.continent = 'Europa'

- Sigue la misma metodología para el segundo ejercicio, primero muestra la media del total de poblacion de todas las ciudades, luego muestra todos los paises agrupados por continentes, al final unes ambas consultas y listo.
De acuerdo, muchas gracias por responder.
Un saludo.


Título: Re: Suma y media con join en SQL
Publicado por: thebus4k en 19 Mayo 2020, 15:05 pm
- Vas armando tus consultas por partes, de lo más sencillo a lo más complejo que se une al final.

- Primero muestras el total de población general:

Código
  1. SELECT SUM(population) FROM city

- Luego haces otra consulta que muestre todos los paises del continente Europa:

Código
  1. SELECT * FROM country
  2. WHERE continent = 'Europa'

- Al final fusionas ambas consultas:

Código
  1. SELECT SUM(city.population) FROM city
  2. INNER JOIN country ON city.countrycode = country.code
  3. WHERE country.continent = 'Europa'

- Sigue la misma metodología para el segundo ejercicio, primero muestra la media del total de poblacion de todas las ciudades, luego muestra todos los paises agrupados por continentes, al final unes ambas consultas y listo.
Hola de nuevo.
A ver, la media tengo claro que se hace con AVG, pero claro como obtento la de todas las ciudades para cada continente?
No se muy bien que hay que poner en el WHERE o si no hay que poner directamente.


Título: Re: Suma y media con join en SQL
Publicado por: EdePC en 19 Mayo 2020, 15:28 pm
- Primero sacas la media de población de todas las ciudades:

Código
  1. SELECT AVG(population) FROM city

- Luego muestras todos los países agrupados por continente:

Código
  1. SELECT continent, name FROM country
  2. GROUP BY continent

- Al final unes ambas consultas:

Código
  1. SELECT country.continent, AVG(city.population) FROM city
  2. INNER JOIN country ON city.countrycode = country.code
  3. GROUP BY country.continent

- La idea es diseccionar el enunciado en consultas más sencillas para unir todo al final.