Suma y media con join en SQL

Iniciado por thebus4k, 18 Mayo 2020, 17:21 PM

0 Miembros y 1 Visitante están viendo este tema.

thebus4k

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




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.

EdePC

- 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 (sql) [Seleccionar]
SELECT SUM(population) FROM city

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

Código (sql) [Seleccionar]
SELECT * FROM country
WHERE continent = 'Europa'


- Al final fusionas ambas consultas:

Código (sql) [Seleccionar]
SELECT SUM(city.population) FROM city
INNER JOIN country ON city.countrycode = country.code
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.

thebus4k

Cita de: 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 (sql) [Seleccionar]
SELECT SUM(population) FROM city

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

Código (sql) [Seleccionar]
SELECT * FROM country
WHERE continent = 'Europa'


- Al final fusionas ambas consultas:

Código (sql) [Seleccionar]
SELECT SUM(city.population) FROM city
INNER JOIN country ON city.countrycode = country.code
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.

thebus4k

Cita de: 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 (sql) [Seleccionar]
SELECT SUM(population) FROM city

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

Código (sql) [Seleccionar]
SELECT * FROM country
WHERE continent = 'Europa'


- Al final fusionas ambas consultas:

Código (sql) [Seleccionar]
SELECT SUM(city.population) FROM city
INNER JOIN country ON city.countrycode = country.code
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.

EdePC

- Primero sacas la media de población de todas las ciudades:

Código (sql) [Seleccionar]
SELECT AVG(population) FROM city

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

Código (sql) [Seleccionar]
SELECT continent, name FROM country
GROUP BY continent


- Al final unes ambas consultas:

Código (sql) [Seleccionar]
SELECT country.continent, AVG(city.population) FROM city
INNER JOIN country ON city.countrycode = country.code
GROUP BY country.continent


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