SQL - Consulta select por meses y empleados

 
Vista:

Consulta select por meses y empleados

Publicado por David (3 intervenciones) el 11/05/2016 14:05:52
Buenos dias:

Tengo una tabla que tiene ventas por fecha y empleado.

La cosa es que necesito saber si existe algun tipo de consulta que devuelva la suma deventas del mes pasado, las del mes anterior... agrupadas por empleaado.

Si existe muchas gracias. Y sino tambien.

Saludos,
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: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Consulta select por meses y empleados

Publicado por leonardo_josue (1173 intervenciones) el 11/05/2016 17:47:02
Hola David:

Nos comentas esto:

1
"...necesito saber si existe algun tipo de consulta que devuelva la suma deventas del mes pasado, las del mes anterior... agrupadas por empleaado...."

La respuesta es SI, si se pude obtener lo que quieres... Ahora que si lo que estás buscando es que alguien te haga el código, creo que te equivocaste de foro, esto no es el Rincón del Vago...

Hay muchas formas de obtener la consulta que quieres, dependerá en primer lugar del manejador de BD's con el que estés trabajando, cosa que no mencionas en tu post. Aunque la sintaxis entre los DBMS's es similar, hay diferencias importantes entre cada uno de ellos.

Enseguida, dependerá también de cómo estés almacenando tu información, por ejemplo, si la fecha la manejas como tipo DATE, DATETIME o algún otro tipo.

Finalmente, la consulta puede ser tan simple como agregar un WHERE con la condición que quieres... pero si ni siquiera trataste de hacerla, entonces no de darás cuenta de eso.

Postea cualquier intento de consulta que hagas, si tiene errores, entonces dinos qué error es el que tiene. Dinos con qué BD's estás trabajando y cuál es la estructura de tu tabla. De la misma manera poste algunos datos de ejemplo y dinos a partir de esos datos de ejemplo qué es lo que esperas obtener como salida. Entre más detalles nos puedas dar más factible será que te podamos ayudar.

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
0
Comentar

Consulta select por meses y empleados

Publicado por David (3 intervenciones) el 12/05/2016 09:23:20
Buenos dias Leonardo.

Gracias por tu respuesta. Ahora que se que se puede me SEGUIRE buscando la vida.

En ningun momento he pensado que esto es es el rincon del vago. Sino de ninguna manera hubiese escrito aqui. Te comento que a lo largo de mis años como programador habre pedido ayuda en foros 4 veces. Generalmente porcuro buscar informacion y leerme toda la informacion posible cuando me toca hacer algo. Pero bueno, eso tu no lo sabes y probablemente tampoco te interese demasiado. Ya has decidido lo que soy.

En cuanto a la informacion que he puesto en la pregunta. Pues si tienes razon. Hay bastante poca. Pero despues de no haber perdido ni un minuto buscando informacion sobre lo que necesito y decidir pedir ayuda desde el minuto 0 estaba lo suficiente mente tranquilo como para releer lo que escribi debido al ansia que tenia de quitarme de en medio una consulta con la que NO llevaba todo el dia pegandome. Sin duda alguna culpa mia. Si alguna vez vuelvo a solicitar ayuda en un foro pondre mas informacion.

Insisto en que muchas gracias por la parte util de tu respuesta. Ahora que se que se puede hacer lo que necesito sin duda alguna lo conseguire y sera gracias a ti... :)

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

Consulta select por meses y empleados

Publicado por leonardo_josue (1173 intervenciones) el 12/05/2016 17:12:20
Hola de nuevo David:

Me da gusto que la parte útil de mi post te haya servido de algo, estoy seguro de que encontrarás la respuesta...

Te comento que en a lo largo de mis años como programador he pedido ayuda en este foro y en otros unas 500 veces y he contestado también unas 2000 consultas... pero bueno eso tú no lo sabes y probablemente tampoco te interese demasiado. Ya has decidido lo que soy.

Si continuas con problemas postea lo que intentaste hacer y el resto de la información que nos sea de utilidad y con gusto trataremos de ayudar.

Si te sirve, enhorabuena, si no también.

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
0
Comentar

Consulta select por meses y empleados

Publicado por Consulta select por meses y empleados (3 intervenciones) el 12/05/2016 17:27:28
Buenas tardes Leonardo.

Ya he visto tus 800 y pico intevenciones en este foro y supongo que tendras otras tantas o mas en otros foros. La verdad es que no he decidido nada sobre lo que es nadie. No he sido yo el que ha hecho menciones a vagos etc. Tampoco se lo que abunda en los foros porque como te he dicho no suelo visitarlos a menudo. Pero bueno, creo que este foro no esta creado ni para que tu ni yo emitamos juicios de valor.

En cuanto al problema que tengo. Pues no. No lo he conseguido aun. He decidido dejar el fin de semana de por medio y empezar con ideas frescas el lunes. Ya sabes como va esto

He conseguido llegar hasta la siguiente

SELECT idEmpleado AS emp, SUM( t.unidades ) AS u, MONTHNAME( t.fechaHora ) AS mes , YEAR( t.fechaHora ) AS ano FROM fvVentas as t GROUP BY YEAR( t.fechaHora ) DESC , MONTH( t.fechaHora ) DESC , t.idEmpleado DESC ;

Donde fechaHora es un campo DateTime. No me devuelve los datos como yo quiero pero en el peor de los casos me podra servir.

Espero que le sirva a alguien mas adelante.

Adios.
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: 2
Ha disminuido su posición en 204 puestos en SQL (en relación al último mes)
Gráfica de SQL

Consulta select por meses y empleados

Publicado por Gonzalo (21 intervenciones) el 12/05/2016 19:18:06
Donde fechaHora es un campo DateTime. No me devuelve los datos como yo quiero pero en el peor de los casos me podra servir.

Si quieres una ayuda que te sirva, empieza por mostrar cómo devuelve los datos esa consulta, y un ejemplo de cómo QUERRÍAS que te los devuelva.
Si no pones algo concreto, será difícil darte soluciones concretas...
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

Consulta select por meses y empleados

Publicado por leonardo_josue (1173 intervenciones) el 12/05/2016 19:26:53
Hola de Nuevo David:

Tienes varios detalles en tu consulta, aunque el más significativo está en la agrupación, ya que desde mi punto de vista, lo que debes hacer es agrupar primero por Empleado y después por Año y mes. Sin embargo no nos dices cuál es el problema con la consulta, es decir, dices que no devuelve los datos como esperas, sin embargo no nos dices qué es lo que estás obteniendo ni tampoco nos dices qué es lo que esperas obtener...

Por la sintaxis que utilizas, puedo suponer que estás trabajando con MySQL (no lo mencionas en tu ninguno de tus posts). Para el ejemplo voy a suponer que tu tablas es más o menos así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
mysql> SELECT * FROM fvVentas;
+------------+----------+---------------------+
| idEmpleado | unidades | fechahora           |
+------------+----------+---------------------+
| 1          |       10 | 2016-05-12 00:00:00 |
| 1          |       20 | 2016-05-01 00:00:00 |
| 1          |       30 | 2016-05-02 00:00:00 |
| 1          |       40 | 2016-06-03 00:00:00 |
| 1          |       50 | 2016-04-01 00:00:00 |
| 1          |       60 | 2016-04-07 00:00:00 |
| 2          |       70 | 2016-05-01 00:00:00 |
| 2          |       80 | 2016-05-02 00:00:00 |
| 2          |       90 | 2016-06-03 00:00:00 |
| 3          |      100 | 2016-05-12 00:00:00 |
+------------+----------+---------------------+
10 rows in set (0.00 sec)

en otras palabras, el empleado 1 tiene tres ventas en Mayo (mes 05), 2 en el mes de Abril (mes 04) y una para el mes de Junio. El empleado 2 tiene dos ventas para el mes de Mayo y una venta para el mes de Junio y el empleado 3 tiene sólo una venta en mayo.

Quitando lo que no sirve de tu consulta y dándole un poco de orden, puedes obtener lo siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
mysql> SELECT
    ->   idEmpleado emp,
    ->   YEAR(t.fechaHora) ano,
    ->   MONTH(t.fechaHora) mes,
    ->   unidades
    -> FROM fvVentas t
    -> ORDER BY 1, 2, 3;
+------+------+------+----------+
| emp  | ano  | mes  | unidades |
+------+------+------+----------+
| 1    | 2016 |    4 |       60 |
| 1    | 2016 |    4 |       50 |
| 1    | 2016 |    5 |       10 |
| 1    | 2016 |    5 |       30 |
| 1    | 2016 |    5 |       20 |
| 1    | 2016 |    6 |       40 |
| 2    | 2016 |    5 |       70 |
| 2    | 2016 |    5 |       80 |
| 2    | 2016 |    6 |       90 |
| 3    | 2016 |    5 |      100 |
+------+------+------+----------+
10 rows in set (0.00 sec)

NOTA. La palabra reservada AS es completamente inútil y ya no forma parte del estándar SQL desde hace años.

En la parte de la agrupación te recomiendo cambiar el orden. Además no es conveniente utilizar el modificador DESC en esta cláusula. Si necesitas ordenar tus resultados entonces utilizas la cláusula ORDER BY

1
2
3
...
GROUP BY YEAR( t.fechaHora ) DESC , MONTH( t.fechaHora ) DESC , t.idEmpleado DESC ;
...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
mysql> SELECT
    ->   idEmpleado emp,
    ->   YEAR(t.fechaHora) ano,
    ->   MONTH(t.fechaHora) mes,
    ->   SUM(unidades) total
    -> FROM fvVentas t
    -> GROUP BY
    -> t.idEmpleado, YEAR(t.fechaHora), MONTH(t.fechaHora)
    -> ORDER BY 1, 2, 3;
+------+------+------+-------+
| emp  | ano  | mes  | total |
+------+------+------+-------+
| 1    | 2016 |    4 |   110 |
| 1    | 2016 |    5 |    60 |
| 1    | 2016 |    6 |    40 |
| 2    | 2016 |    5 |   150 |
| 2    | 2016 |    6 |    90 |
| 3    | 2016 |    5 |   100 |
+------+------+------+-------+
6 rows in set (0.00 sec)

Si sobre esta consulta quieres filtrar algún dato, entonces sólo agregas la condición WHERE correspondiente. Si esto no te sirve dinos qué es lo que esperas obtener como resultado y tratamos de darte alguna otra alternativa.

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
0
Comentar