Tek bir ekip için çeşitli en uzun çizgileri listeleyen bir web sayfası oluşturuyorum ancak ilgili sonuç türlerinin bir bileşimi için bir çizgi hesaplamaya çalışırken bir sorunla karşılaştım. Aşağıdaki sorgu (veya benzeri) kullanılarakMySQL kullanarak en uzun yenilmeyen çizgi nasıl hesaplanır?
aşağıdaki gibi verileri bir tabloda sunulmuştur ...
date result gf ga type compfull -------------------------------------------------- 1980-08-16 W 3 0 league Division 1 1980-08-19 L 1 2 league Division 1 1980-08-23 W 3 1 league Division 1 1980-08-26 W 2 0 league Division 1 1980-08-30 D 2 2 league Division 1 and so on...
, içeri attı kazanç veya kayıp, hatta oyunların en uzun koşmak belirleyebilir.
SELECT result, type, MIN(date) as StartDate, MAX(date) as EndDate, COUNT(*) as Games
FROM (SELECT result, type, date, compfull, (SELECT COUNT(*)
FROM resultengine R
WHERE R.result <> RE.result
AND R.date <= RE.date) as RunGroup
FROM resultengine RE) A WHERE result='W' GROUP BY result, RunGroup ORDER BY Games
Bu, here numaralı bulduğum mükemmel kaynağa dayanmaktadır. Ben bunu istiyorum tam olarak ne yapar ve bilmek istediğini söylüyor - Aynı Ben yenilmez oyunların en uzun çizgi hesaplamak için nasıl edilir çözemiyorum ne
result='L'
geçtiğinizdeyse yani geçerlidir L. olmadan en uzun koşmak Ve aynı tersi.
Ben boşuna aşağıdaki sorguyu denedim: Yine
WHERE result='W' OR result='D'
, bu işe yaramazsa:
SELECT result, type, MIN(date) as StartDate, MAX(date) as EndDate, COUNT(*) as Games
FROM (SELECT result, type, date, compfull, (SELECT COUNT(*)
FROM resultengine R
WHERE R.result <> RE.result
AND R.date <= RE.date) as RunGroup
FROM resultengine RE) A WHERE result!='W' GROUP BY result, RunGroup ORDER BY Games
Ben de sorguyu değiştirerek denedim. Her ikisi de, Ws veya Ls'nin en uzun çizgisini sunmak için kullanılan sorguyu yansıtma girişimleridir ve verilerimin manuel sayımı, bunun doğru olmadığını söyler. Hiç şüphe yok ki burada basit bir şey eksik, ama bu sorguyu nasıl uygulayabilirim ki bana Ls veya Ws ile sonuçların en uzun serisini anlatıyor?
select MAX(final.win_seq_count) from
(Select date,result,gf,ga,type,compfull,
@seq_count:=if(result="L",0,@seq_count:[email protected]_count+1) as win_seq_count,
from resultengine,(select @seq_count:=0) t
order by date) final
Not:
"Tek bir takımı" tanımlamak için hangi sütunları/sütunları kullanıyorsunuz? – seahawk
@seahawk Bütün tablo bir takımın sonuçlarının bir koleksiyonudur - "gf" sütunu bu takımın attığı golleri içerir, oysa "ga" hedefleri kabul edilir. Bu sorguya uygun olmadığı düşünülen bir "rakip" sütunum var. Demek istediğin bu mu? –
Lütfen cevabımı kontrol edin ve sizin için çalışıp çalışmadığını onaylayın. – seahawk