Tengo una tabla con registros de llamadas telefónicas y necesito ayuda con una consulta SQL

Tengo una tabla con registros de llamadas realizadas, que contiene el destino de esa llamada, la fecha de realización, la duración, el importe de esa llamada, y necesito realizar una consulta entre dos fechas que le indico, y que me muestre la duración de las llamadas agrupadas por destinos y ordenadas por el recuento de llamadas yo realizo esta consulta : SELECT TOP 10 Sum(Second([Calls]! [Duracion])+Minute([Calls]! [Duracion])*60) AS SumaDeDuracion*, Sum(Calls. Importe) AS SumaDeImporte, Count(Calls. Destino) AS CuentaDeDestino, Calls. Destino, Calls. Fecha INTO IMPRIME FROM Calls GROUP BY Calls. Destino, Calls. Fecha HAVING (((Calls. Fecha) Between #1/29/2003# And #2/28/2003#)) ORDER BY Count(Calls. Destino) DESC; *esto lo hago para convertir a segundos el tiempo de duración Y me agrupa por destino y por fecha, es decir si tengo dos destinos a brasil con distinta fecha yo quiero que me los junte con la cantidad de llamadas totales, pero no me lo hace. Tampoco me responde al top 10, me visualiza todos Os estaría eternamente agradecido si me podéis dar una solución. Estoy entrando en un mundo desconocido que es el sql, y una ayuda seria de agradecer Un saludo.
Borrar
Respuesta
1
Si no quieres que te agrupe por fecha, tienes que sacar el campo fecha del group by y del select, entonces tendría que traértelos agrupados por destino.
En cuanto a que eno te hace el top 10, no se en que tipod e base ests trabajando ..
sql server y access usa top 10
Informix usa first 10
Mysql usa limit 10
Aunque ahora me haces dudar, creo que nunca use un top 10 cuando hago un group by.

1 respuesta más de otro experto

Respuesta
1
Prueba este código ..
Set rowcount 10
SELECT
Sum(Second([Calls]![Duracion])+Minute([Calls]![Duracion])*60) AS SumaDeDuracion*,
Sum(Calls.Importe) AS SumaDeImporte,
Count(Calls.Destino) AS CuentaDeDestino,
Calls.Destino
INTO IMPRIME
FROM Calls
WHERE (((Calls.Fecha) Between #1/29/2003# And #2/28/2003#))
GROUP BY Calls.Destino
ORDER BY Count(Calls.Destino) DESC;
Set rowcount 0
La instruccion set rowcount esta forzando a la base de datos a presentar solo 10 registros.
Se quito del del select que me enviaste el campo fecha, porque necesitas agrupar por destino. Por la misma razón se quito la fecha de GROUP BY. Y la condición del having se traslado al where, esto se hace para que la condición sea global y no por agrupación.
Espero que te funcione este código, yo no lo he probado porque no tengo la estructura de la tabla.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas