SQL - Problemas para usar avg con count y having

 
Vista:
sin imagen de perfil
Val: 2
Ha aumentado su posición en 36 puestos en SQL (en relación al último mes)
Gráfica de SQL

Problemas para usar avg con count y having

Publicado por Victor (2 intervenciones) el 19/03/2019 01:47:50
Hola hola estimados:

Tengo el siguiente problema:
me pidieron hacer el siguiente ejercicio:

Listar el promedio de tripulantes por barco

Estas son las tablas:

barco
bar_codigo number(8) primary key,
bar_nombre varchar2(10)
bar_eslora number(3),
bar_tipo_carga varchar2(12)

tripulante
trip_rut number primary key
trip_nombre varchar2(10)
pais_codigo number(3)
bar_codigo number(8)

pais
pais_codigo number(3) primary key,
pais_nombre varchar2(15)

mantencion
mant_codigo number(6) primary key
mant_fecha date
mant_observacion varchar2(80)
bar_codigo number(8)

lo que se pide es el total de todos los integrantes del barco, del conteo se tiene que sumar todos los integrantes del barco, pero lo que no se hace es conjugar ordenadamente el, COUNT() SUM(), y AVG(), por lo cual siempre me falla la búsqueda.

Mi código es este:

1
2
3
4
5
6
7
SELECT AVG(bar_codigo) AS 'brCodigo'
   FROM tripulante
   GROUP BY bar_codigo
   HAVING AVG(bar_codigo) = (SELECT AVG(bar_codigo) AS 'brCodigo',
                             SUM(COUNT(bar_codigo))
                             FROM tripulante
                             GROUP BY bar_codigo);

y el error que sale es:

ERROR at line 1:
ORA-00923: FROM keyword not found where expected

Cualquier ayuda se agradece
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 109
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Problemas para usar avg con count y having

Publicado por Rafael (111 intervenciones) el 19/03/2019 09:56:44
Hola, Victor:

Creo que el problema inicia con la teoria de conjuntos, y el conocimiento de las funciones:

1. AVG obtiene el PROMEDIO, que es el resultado de sumar todos los valores de un campo y dividirlo entre el numero de registros sumados.
2. COUNT obtiene un CONTEO devuelve el numero de registros consultado.
3. SUM suma el valor de un CAMPO para todos los registros.

Ahora bien el operador GROUP BY hace cortes y reinicia los procesos de acumulacion ...

Tu quieres el total de integrantes (tripulantes) que tiene cada barco...
Si lo traduces es un COUNT con un GROUP BY barco ....

tan simple como :
1
2
3
4
SELECT bar_codigo
     , COUNT(trip_rut number)
FROM   tripulante
GROUP  BY bar_codigo

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar