Sql hakkinda yardim.

Fiberadam

Asistan
Selamlar,

Nasil yapabilecegimi ogrenmek istedigim bir konuda, yardim yada yonlendirme rica ediyorum arkadaslar.

3 kolunlu bir tablo dusunun

Hafta | Atilan Gol dakikalari | Yenilen Gol dakikalari
1 12-40-80 25
2 30-50 NULL
3 NULL 60-70
4 xxx xxxx
5
6

Seklinde giden.

Benim yapmak istedigim, bir sorgu yardimiyla asagida belirtmis oldugum bilgilere ulasmak.

Mesela: Toplam atilan gol sayisi ve yenilen gol sayisi,
Yuzde olarak istatislikleri, ornegin atilan toplam 60 golun 30 u ilk 20 dakika da, 15 tanesi 20-30 dakika araliginda ve bunun turevleri gibi.

Bunlari nasil yapabilirim?

Tesekkurler.
 

s7v7n

Asistan
--Atilan gol sayisi
SELECT COUNT(2) FROM TABLE
--Yenen gol sayisi
SELECT COUNT(3) FROM TABLE
--Atilan gol sayisi dakikaya gore
SELECT COUNT(2) FROM TABLE GROUP BY [Atilan Gol dakikalari]
 

vatan_tr

Üyecik
tabloları bu şekilde oluşturursan istediğin sonuca ulaşamazsın..

---------- Post added at 10:09 ---------- Previous post was at 09:55 ----------

Tablonu şöyle değiştir bence..
Hafta | golDakikasi | AttikMiYedikMi
1 5 0
1 6 1
1 15 0
1 55 0
2 22 1
 

Turab Garip

Dekan
Onursal Üye
Eğer tablon ilk şekildeki gibi kalacaksa, toplam gol sayısı için şu işe yarayabilir:
Kod:
SELECT FIND_IN_SET('-', atilan_gol_dakikalari)+1 FROM goller

Verdiğin formata göre atılan gol dakikaları "atilan_gol_dakikalari" isimli sütunda toplanmışsa, sütundaki gol dakikaları kısa çizgi (-) ile ayrılmışsa, tablonun da ismi "goller" ise MySQL'de bu sorgunun atılan toplam gol sayısını vermesi gerekir. Aynı şekilde yenilen gol sayısını da bir sorgu ile seçip ikisini toplayabilirsin. (Atılan+Yenilen istiyorsan.)

Yüzde hesabını bu tablo formatında SQL ile yapman tahmin ediyorum biraz uğraştırır; prosedür yazman gerekir. (Bu konuda yardımcı olamam pek bilmiyorum SQL prosedürü yazmayı). Ancak eğer bir çıktı almak için herhangi bir script dili kullanıyorsan, SQL'de yüzde hesaplamak yerine verileri seçip yüzdeyi script içinde hesaplamak daha kolay ve avantajlı olur.
 

Fiberadam

Asistan
S7v7n mesajin icin tesekkurler, ilk iki sorguda sorun yok ama son sorgu olmadi.

Vatan_tr tesekurler aslinda attikmi yedikmi kisminida su etapda es gecebilrim ama 1 den fazla gol oldugu zaman, 2-3 farkli degeri ayni hucre icine yazip daha sonra nasil bir sorgu ile bu bilgilere ulasirim

Bu konuda cok iyi olmadigimdan uygun tabirleri de kullanmiyor olabilirim.

Kisacisi yapmaya calistigim sey ufak bir istatistik tablosu, gol dakiklarini girecegim. Sonra 6 zaman dilimde sorgu yapip (0-15, 16-30, 31-45, 46-60, 61-75, 76-90) sonuclari almak istiyorum.

ornek: 10 golun 5'i 16-30 dakilar arasinda atilmis %50, 2 si 60-75 zaman diliminde atilmis yuzdesi %20 .. Bunun gibi.. ek olarak takimin gol attigi zaman diliminlerinin yuzde olarak siranmasini filan istiyorum.

Tablodaki kolon sayisi yada kolonlarin ne olacagi konusunda problem yok . Ama tabikide her dakika icin bir kolon koyamam. Her zaman dilimi icin bir kolon koysam. Ayni zaman diliminde 2 gol olursa bunu nasil hesaplatacagim.

Biraz zor oldugunu biliyorum zaman ayiran arkadaslara tesekkurler.

---------- Post added at 10:56 ---------- Previous post was at 10:50 ----------

Elmacik tesekkurler. Ben cok iyi bilmiyorum acikcasi Sql i kendi kendime ogrenmeye calisiyorum su aralar. Verdigin kodu deneyecegim, yuzde kismini da o asamaya geldigim zaman cozmeye calisirim artik. Tesekkurler.
 

Turab Garip

Dekan
Onursal Üye
COUNT sorgusu eğer golleri "20-45-60" gibi ayırdıysan çalışmaz. 20, 45 ve 60ıncı dakikalarda gol olduğunu göstermez, her satırı bir tane sayar. Yani üç golü tek gol sayar. Sayıları kontrol et.
 

Son mesajlar

Üst