Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Contar registros agrupados

Estas en el tema de Contar registros agrupados en el foro de Mysql en Foros del Web. Buenas, si alguien pudiera ayudarme estaré muy agradecido por su contribución al crecimiento de mi conocimiento. Mi caso es el siguiente, tengo una tabla de ...
  #1 (permalink)  
Antiguo 06/06/2012, 20:08
Avatar de Nuc134rB0t  
Fecha de Ingreso: junio-2012
Ubicación: Venezuela
Mensajes: 6
Antigüedad: 11 años, 10 meses
Puntos: 0
Contar registros agrupados

Buenas, si alguien pudiera ayudarme estaré muy agradecido por su contribución al crecimiento de mi conocimiento.

Mi caso es el siguiente, tengo una tabla de obreros que tienen múltiples registros similares. Diferencian en monto o asunto, entre otros.

Código:
idtabla  cedula        nombre ...
1           100            PEDRO
2           100            PEDRO
3           100            PEDRO
4           102            JOSE
5           102            JOSE
6           135            MGUEL
Me gustaría saber como contar estos registros y que me diga la cantidad de obreros (3).

Intenté esto pero me dio error #1242 - Subquery returns more than 1 row.

SELECT count((SELECT count(id) FROM `lista` GROUP BY id)) AS Total

Muchas gracias desde ya.
  #2 (permalink)  
Antiguo 07/06/2012, 01:28
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Contar registros agrupados

Código MySQL:
Ver original
  1. FROM (SELECT DISTINCT cedula FROM lista);

Código MySQL:
Ver original
  1. FROM (SELECT cedula FROM lista GROUP BY cedula);



Deberias tener


TablaObreros
idObrero
cedula
nombre
...

TablaMontos
idMonto
idObrero
monto
...

asi solo guardas una vez los datos de cada obrero....
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 07/06/2012, 10:03
Avatar de Nuc134rB0t  
Fecha de Ingreso: junio-2012
Ubicación: Venezuela
Mensajes: 6
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Contar registros agrupados

Aunque me dio un error de alias que pude resolver agregándole: AS Total, me funcionó de maravilla.

Código MySQL:
Ver original
  1. FROM (SELECT cedula FROM lista GROUP BY cedula) AS Total;

Muchas gracias!
  #4 (permalink)  
Antiguo 07/06/2012, 11:41
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Contar registros agrupados

Hola Nuc134rB0t:

Si bien ya resolviste tu problema, te comento que hay otra forma de llegar al mismo resultado sin necesidad de utilizar subconsultas. El operador COUNT soporta modificador DISTINCT, de tal manera que puedes hacer algo como esto:

Código:
SELECT COUNT(DISTINCT cedula) FROM lista;
Checa este script, observa que tu consulta y esta consulta arrojan el mismo resultado.

Código MySQL:
Ver original
  1. mysql> SELECT * FROM lista;
  2. +---------+--------+--------+
  3. | idtabla | cedula | nombre |
  4. +---------+--------+--------+
  5. |       1 |    100 | PEDRO  |
  6. |       2 |    100 | PEDRO  |
  7. |       3 |    100 | PEDRO  |
  8. |       4 |    102 | JOSE   |
  9. |       5 |    102 | JOSE   |
  10. |       6 |    135 | MGUEL  |
  11. +---------+--------+--------+
  12. 6 rows in set (0.00 sec)
  13.  
  14. mysql> SELECT COUNT(*)
  15.     -> FROM (SELECT cedula FROM lista
  16.     -> GROUP BY cedula) AS Total;
  17. +----------+
  18. | COUNT(*) |
  19. +----------+
  20. |        3 |
  21. +----------+
  22. 1 row in set (0.00 sec)
  23.  
  24. mysql> SELECT COUNT(DISTINCT cedula) FROM lista;
  25. +------------------------+
  26. | COUNT(DISTINCT cedula) |
  27. +------------------------+
  28. |                      3 |
  29. +------------------------+
  30. 1 row in set (0.00 sec)

Saludos
Leo
  #5 (permalink)  
Antiguo 07/06/2012, 20:05
Avatar de Nuc134rB0t  
Fecha de Ingreso: junio-2012
Ubicación: Venezuela
Mensajes: 6
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Contar registros agrupados

Interesante! Veo que mi problema también radicaba en el desconocimiento del DISTINCT.

Gracias por el aporte.

Etiquetas: 1242, agrupados, count, registros, repetidos, subquery
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:35.