SQL - Media de distintos parametros en SQL

 
Vista:
sin imagen de perfil

Media de distintos parametros en SQL

Publicado por Alex (4 intervenciones) el 31/10/2014 10:37:36
Buenos días!

Estoy empezando con SQL y me he encontrado con el siguiente problema:

Tengo esta tabla

ID Tiempo
1 20
1 15
1 12
1 11
1 14

2 40
2 32
2 29
3 44
3 52
4 12
5 25
5 31


Lo que yo quiero es sacar dos valores: la media tanto del ID 1 como la del ID 5 (por separado). Es decir:
Media1
14,14

Media5
28

He podido sacar la media del tiempo del ID_1 con lo siguiente:

SELECT AVG(Tiempo)as MEDIA_1
FROM Tabla
WHERE ID = 1



Puedo sacar la media del 1 y el 5 y mostrarlas por separado? Se puede hacer en una sola instrucción? O debo calcualr la media del 1, anotarla, cambiar el 1 por el 5 y calcualr de nuevo?

Gracias
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

Media de distintos parametros en SQL

Publicado por Ramiro (7 intervenciones) el 02/11/2014 00:48:07
SELECT ID, AVG(Tiempo)as MEDIA_1
FROM Tabla
GROUP BY ID
WHERE ID = 1 AND ID = 5
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Media de distintos parametros en SQL

Publicado por leonardo_josue (1173 intervenciones) el 03/11/2014 18:40:34
Hola Alex...

Hay dos detalles en la consulta que propone Ramiro que hará que la consulta no funcione:

Primero, la cláusula WHERE debe aparecer antes que la cláusula GROUP BY, de lo contrario te va a marcar un error de sintaxis.

Segundo, al poner la condición

1
2
3
...
WHERE id = 1 AND id = 5
...

Te regresaría una consulta vacía, ya que estás diciendo que un ID sea a la vez 1 y 5 (los dos a la vez), sería algo así como decir que un auto sea de color BLANCO y al mismo tiempo sea de color NEGRO, simplemente no existe.

En su defecto, debes de utilizar la condición IN o el operador OR, es decir, el ID puede ser 1 o puede ser 5...

Finalmente, el operador AS para darle el alias al campo es completamente inútil y en la mayoría de los DBMS ya no es necesario ponerla.

La consulta entonces quedaría así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
mysql> SELECT * FROM tabla;
+------+--------+
| ID   | Tiempo |
+------+--------+
|    1 |     20 |
|    1 |     15 |
|    1 |     12 |
|    1 |     11 |
|    1 |     14 |
|    2 |     40 |
|    2 |     32 |
|    2 |     29 |
|    3 |     44 |
|    3 |     52 |
|    4 |     12 |
|    5 |     25 |
|    5 |     31 |
+------+--------+
13 rows in set (0.01 sec)
 
mysql> SELECT id, AVG(tiempo) media FROM tabla WHERE id IN (1, 5) GROUP BY id;
+------+---------+
| id   | media   |
+------+---------+
|    1 | 14.4000 |
|    5 | 28.0000 |
+------+---------+
2 rows in set (0.00 sec)

Saludos
Leo
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