Bases de Datos - Consulta* Alguien me puede ayudar a traer todos con un mismo ID a otra sumandolos?

 
Vista:
Imágen de perfil de Zeki
Val: 1
Ha aumentado su posición en 19 puestos en Bases de Datos (en relación al último mes)
Gráfica de Bases de Datos

Consulta* Alguien me puede ayudar a traer todos con un mismo ID a otra sumandolos?

Publicado por Zeki (1 intervención) el 01/10/2019 05:47:59
Tengo una tabla que es
EMPLEADOS
IDe Estado Asistencia
01. A. S
02 A. S
03 A. S
01. A. E
02. A. E
"S" es salida y "E" es estrada, y necesito una consulta que me diga Cuantas veces un ID a Salido y entrado
Tipo asi
IDe. ENTRADAS. SALIDAS.
01. 3. 3
-que me sume las estradas y salidas
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: 72
Bronce
Ha mantenido su posición en Bases de Datos (en relación al último mes)
Gráfica de Bases de Datos

Consulta* Alguien me puede ayudar a traer todos con un mismo ID a otra sumandolos?

Publicado por miguelZ (26 intervenciones) el 01/10/2019 16:37:21
QUe haz intentado, agrega que solucion estas proponiendo
y que problema tienes

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

Consulta* Alguien me puede ayudar a traer todos con un mismo ID a otra sumandolos?

Publicado por anonymous (6 intervenciones) el 07/10/2019 18:49:27
Tienes que hacer un count(*) y un Group by por Estado Asistencia, para que de esa forma te contabilice por cada estado y sepas cuantos hay de c/u
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
Imágen de perfil de Francisco
Val: 107
Bronce
Ha mantenido su posición en Bases de Datos (en relación al último mes)
Gráfica de Bases de Datos

Consulta* Alguien me puede ayudar a traer todos con un mismo ID a otra sumandolos?

Publicado por Francisco (33 intervenciones) el 08/10/2019 18:29:49
Hola

Asumiendo que tu motor de base de datos soporte CTE la solucion se divide en partes y luego se complementan

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
--Entradas por empleados
WITH entradas AS(
    SELECT id, count(*) tot_entradas
    FROM empleados
    WHERE asistencia = 'E' GROUP BY id
),
--Salidas por empleados
salidas AS (
    SELECT id, count(*) tot_salidas
    FROM empleados
    WHERE asistencia = 'S' GROUP BY id
),
--Devuelve solo los id del empleado
--No deberia ser asi pero es lo que hay y me evito el DISTINCT
records AS (
    SELECT id, count(*)
    FROM empleados
)
SELECT id,
    COALESCE(tot_entradas, 0) tot_entradas,
    COALESCE(tot_salidas, 0), tot_salidas
FROM records emp
LEFT JOIN entradas e ON e.id = emp.id
LEFT JOIN salidas s ON s.id = emp.id

Hay otra manera de hacerlo, mas corta pero menos eficiente

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
SELECT
    records.id emp_id,
    COALESCE( (
        SELECT count(*) tot_entradas
        FROM empleados e
            WHERE e.asistencia = 'E' AND e.id = records.id
        GROUP BY e.id
    ), 0) AS tot_entradas,
    COALESCE( (
        SELECT count(*) tot_entradas
        FROM empleados e
            WHERE e.asistencia = 'S' AND e.id = records.id
        GROUP BY e.id
    ), 0) AS tot_salidas
FROM (
    SELECT id, count(*)
    FROM empleados
    GROUP BY id
) AS records

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
sin imagen de perfil
Val: 27
Ha disminuido 1 puesto en Bases de Datos (en relación al último mes)
Gráfica de Bases de Datos

Consulta* Alguien me puede ayudar a traer todos con un mismo ID a otra sumandolos?

Publicado por Leopoldo (15 intervenciones) el 08/10/2019 21:44:39
Saludos...
1
2
3
select id, if asistencia='E' then 'Entrada' else 'Salida' endif as asistencia,  count(asistencia)
    from empleados group by id, asistencia
   order by id;
Espero que te sirva...
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