Hola joselegolas:
Este tipo de consultas es uno de los ejemplos típicos que se hacen cuando comienzas a aprender SQL... en realidad hay muchas formas de obtenerlo y en la red hay muchísimos ejemplos... en este mismo foro hemos tratado infinidad de veces este tipo de consultas, por lo que te sugiero que para la próxima te tomes un poco más de tiempo para preguntarle a SAN GOOGLE, el es muy sabio y generalmente tiene la respuesta a lo que sea que preguntes jejejejejeje...
La manera más simple es con sumas condicionales, que son especie de contadores en programación... supongo que habrás visto muchas veces algo como esto:
Al colocar esto dentro de un ciclo, lo que haces es contar el número de veces que se ejecuta el ciclo... En este caso, utilizas el mismo principio para 'contar' cada uno de los estados... cada que encuentres un estado con OK para un usuario en particular Sumas un 1 al resultado total... esto debes hacerlo para TODOS LOS ESTADOS QUE EXISTEN EN TU TABLA... sería algo más o menos así:
Código MySQL:
Ver original+----------+-----------+-----------------+
| usuario | estado | tarea |
+----------+-----------+-----------------+
| José | OK | Escribir libro |
| María | OK | Cocinar arroz |
| María | Pendiente | Pintar cuadro |
| Leonardo | Pendiente | cantar canción |
+----------+-----------+-----------------+
-> usuario,
-> SUM(IF(estado
= 'OK', 1, 0)) total_ok
, -> SUM(IF(estado
= 'Pendiente', 1, 0)) total_pendiente
+----------+----------+-----------------+
| usuario | total_ok | total_pendiente |
+----------+----------+-----------------+
| José | 1 | 0 |
| Leonardo | 0 | 1 |
| María | 1 | 1 |
+----------+----------+-----------------+
En tu post no nos dices de dónde obtienes los nombres de los usuarios... puedo suponer que los tienes en una tabla aparte... lo único que tendrías que hacer es un JOIN con esa tabla para obtener el resultado tal como lo quieres.
Saludos
Leo.