Ver Mensaje Individual
  #5 (permalink)  
Antiguo 28/03/2014, 13:15
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: Contar apariciones dentro de serie

Hola lucianomdq:

Creo que tenemos un problema de lenguaje, en este basto idioma español .

Si entendí, lo que te refieres con "serie" sería lo mismo que al número de partidos continuos o seguidos que un equipo gana, o lo que es lo mismo una "racha" o una "seguidilla" o partidos ganados "en fila"... (lo que en inglés llaman 'Streak')... si estoy en lo correcto, se me ocurren algunas formas para obtener la consulta, sin embargo, como tienes tu información, no es suficiente... Necesariamente necesitas darle un "orden" a tus datos... es decir, ¿cómo sé qué 3 va antes de qué otro 3? En primer lugar necesitas un orden para tus datos... supongamos que tienes un campo id (o fecha, o consecutivo, lo que sea), más o menos así:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM tabla;
  2. +------+-------------+--------+
  3. | id   | equipo      | puntos |
  4. +------+-------------+--------+
  5. |    1 | Real Madrid |      3 |
  6. |    1 | Real Madrid |      3 |
  7. |    2 | Real Madrid |      0 |
  8. |    3 | Real Madrid |      1 |
  9. |    4 | Real Madrid |      3 |
  10. |    5 | Real Madrid |      3 |
  11. |    6 | Real Madrid |      3 |
  12. |    7 | Real Madrid |      3 |
  13. |    8 | Real Madrid |      3 |
  14. |    9 | Real Madrid |      0 |
  15. |   10 | Real Madrid |      0 |
  16. |   11 | Real Madrid |      0 |
  17. |   12 | Real Madrid |      0 |
  18. |   13 | Real Madrid |      1 |
  19. +------+-------------+--------+
  20. 14 rows in set (0.00 sec)

Entonces, una forma para obtener las "series" o rachas de partidos ganados, es determinar cuando inicia la racha y cuando termina la racha... con los datos de ejemplo de arriba, hay una racha que comienza en la fecha 1 (id = 1) y termina en la fecha 2 (id=2), por lo tanto, la "duración" de la racha es de 2-1 = 1 partidos...

ahora bien, hay otra racha que comienza en la fecha 4 (id = 4) y termina hasta la fecha 9 (id=9)... esto quiere decir que la "serie" de partidos ganados es de 9 - 4 = 5 partidos...

Ahora bien, con esta idea, puedes hacer una consulta más o menos así:

Código MySQL:
Ver original
  1. mysql>  SELECT T1.equipo, T1.id inicio_racha, MIN(T2.id) fin_racha
  2.     ->  FROM tabla T1
  3.     ->  INNER JOIN
  4.     ->  tabla T2 ON T1.equipo = T2.equipo AND T2.id > T1.id AND
  5.     ->  T2.puntos IN (0, 1)
  6.     ->  WHERE t1.puntos = 3
  7.     ->  GROUP BY T1.equipo, T1.id
  8.     ->  ORDER BY T1.equipo, T1.id, T2.id;
  9. +-------------+--------------+-----------+
  10. | equipo      | inicio_racha | fin_racha |
  11. +-------------+--------------+-----------+
  12. | Real Madrid |            1 |         2 |
  13. | Real Madrid |            4 |         9 |
  14. | Real Madrid |            5 |         9 |
  15. | Real Madrid |            6 |         9 |
  16. | Real Madrid |            7 |         9 |
  17. | Real Madrid |            8 |         9 |
  18. +-------------+--------------+-----------+
  19. 6 rows in set (0.00 sec)

Lo que haces básicamente es buscar el id de inicio de la racha y el id del fin de la racha... es necesario entonces buscar el primer registro (MIN(id)) posterior que no se haya ganado (T2.id > T1.id and T2.puntos IN (0, 1))

Con esta consulta puedes obtener la duración de las series y sacar el mayor.

Dale una revisada a la consulta, espero que te sirva.

Saludos
Leo.