İstatistik

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
dost
Üye
Mesajlar: 104
Kayıt: 08 Oca 2004 11:33

İstatistik

Mesaj gönderen dost »

Merhaba,

veri girişi

UNVANI-KARAR_TARIH-KARAR
ŞEF------01.01.2004-----İKAZ
İŞÇİ-----01.01.2004-----İKAZ
MEMUR--02.02.2004-----UYARMA
İŞÇİ-----04.04.2004-----UYARMA
MEMUR--03.03.2004-----KINAMA
" " "
" " "

Kod: Tümünü seç

SELECT DISTINCT T1.UNVANI,');
  (SELECT COUNT(*) FROM TABLO2 T2 WHERE T2.KARAR_TARIHI=T1.KARAR_TARIHI AND T2.KARAR="İKAZ") AS IKAZ,');
  (SELECT COUNT(*) FROM TABLO2 T2 WHERE T2.KARAR_TARIHI=T1.KARAR_TARIHI AND T2.KARAR="UYARMA") AS UYARMA,');
  (SELECT COUNT(*) FROM TABLO2 T2 WHERE T2.KARAR_TARIHI=T1.KARAR_TARIHI AND T2.KARAR="KINAMA") AS KINAMA,');
  COUNT(*) AS TOPLAM');
FROM TABLO1 T1 WHERE T1.KARAR_TARIHI>=:TARIH1 AND T1.KARAR_TARIHI<=:TARIH2');
GROUP BY T1.UNVANI,T1.KARAR_TARIHI');
ORDER BY T1.UNVANI');
01.01.2004-04.04.2004 tarih arası olarak

UNVANI-IKAZ-UYARMA-KINAMA-TOPLAM
ŞEF------1-----0---------0---------1
İŞÇİ-----1-----1---------0---------2
MEMUR--0-----1---------1---------2

şeklinde aynı unvanları tekrarlamadan tek kalem olarak nasıl alabilirim.
Sql koduna yardımcı olabilirmisiniz.

Teşekkürler.
dost
Üye
Mesajlar: 104
Kayıt: 08 Oca 2004 11:33

Mesaj gönderen dost »

Halen istediğim şekilde istatistik bilgiyi verecek yukarıdaki Sql kodunu çalıştıramadım. Unvanları tekrarlayarak aşağıdaki gibi veriyor,

UNVANI-IKAZ-UYARMA-KINAMA-TOPLAM
ŞEF-------1-----0---------0----------1
ŞEF-------0-----1---------0----------1
İŞÇİ------1-----0---------0----------1
İŞÇİ------0-----1---------0----------1
MEMUR---1-----0---------0----------1
MEMUR---0-----1---------0----------1
MEMUR---0-----0---------1----------1

Unvanları tekrarlamadan aşağıdaki gibi istatistik nasıl alabilirim.

UNVANI-IKAZ-UYARMA-KINAMA-TOPLAM
ŞEF-------1-----2---------4----------7
İŞÇİ------1-----1---------1----------3
MEMUR---2-----1---------1----------4

ilgilenen Sql üstatlarına şimdiden teşekkür ederim.
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

Veritabanınızı bilmiyorum ama eğer ms sql serversa şu işinizi görecektir:

Kod: Tümünü seç

SELECT UNVANI,SUM(IKAZ),SUM(UYARMA),SUM(KINAMA),SUM(TOPLAM)
FROM
(SELECT DISTINCT T1.UNVANI,
  (SELECT COUNT(*) FROM TABLO2 T2 WHERE T2.KARAR_TARIHI=T1.KARAR_TARIHI AND T2.KARAR="İKAZ") AS IKAZ,
  (SELECT COUNT(*) FROM TABLO2 T2 WHERE T2.KARAR_TARIHI=T1.KARAR_TARIHI AND T2.KARAR="UYARMA") AS UYARMA,
  (SELECT COUNT(*) FROM TABLO2 T2 WHERE T2.KARAR_TARIHI=T1.KARAR_TARIHI AND T2.KARAR="KINAMA") AS KINAMA,  COUNT(*) AS TOPLAM
FROM TABLO1 T1 WHERE T1.KARAR_TARIHI>=:TARIH1 AND T1.KARAR_TARIHI<=:TARIH2
GROUP BY T1.UNVANI,T1.KARAR_TARIHI
ORDER BY T1.UNVANI
) A
GROUP BY UNVANI
dost
Üye
Mesajlar: 104
Kayıt: 08 Oca 2004 11:33

Mesaj gönderen dost »

veri tabanı access,
dost
Üye
Mesajlar: 104
Kayıt: 08 Oca 2004 11:33

Mesaj gönderen dost »

Naile hanım ilginize çok teşekkür ederim.

kodu access te çalıştıramadım. Access violation hatası veriyor,

işin içinden çıkamadım.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

S.A.
Grup by kısmında sadece unvana göre gruplamayı denedinmi.?
Kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
dost
Üye
Mesajlar: 104
Kayıt: 08 Oca 2004 11:33

Mesaj gönderen dost »

Naile hanım Sql kodunu ben delphi ye aktarırken eksik aktarmışım,
access te mükemmel çalıştı,

ilgi ve yardımlarınız için tekrar teşekkür ederim.
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

Rica ederim, çalışmasına sevindim :)
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

Merhabalar,

Benzer şekilde bizimde istatistik çıkarmamız gerekiyor her ay.

Olay türleri toplamı
iz var toplamı
iz yok toplamı
şeklinde istatistik içeriği sürüp gidiyor. Biz bunun her ay sql kodu ile otomatik yapılmasını ve ay sonunda sadece tuşa basıp çıktı almak istiyoruz. yukarıdaki koddan temeli anladım gibi geliyor ama kullandığım vt firebird.

düşüncem qreport içine elimizde bulunan ve gönderdiğimiz istatistik raporunu çizmek ve toplamların yazılacağı alanlara sql ile alınan toplamları aktarmak.

Bu sql kodunu nasıl ve nereye yazmalıyım. Delphi kısmındamı iyi olur vt kısmındamı?

VT=Firebird
Delphi=7

Teşekkür ve saygılarla.
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

Bence tabiki vt :)

SQLini yazdıktan sonra sana dbLabellara datasetinin bağlı olduğu datasource'u bağlamak kalır..
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

naile yazdı:Bence tabiki vt :)

SQLini yazdıktan sonra sana dbLabellara datasetinin bağlı olduğu datasource'u bağlamak kalır..
naile hanıma katılıyorum. bunun bir artısıda hesaplamada bir değişiklik olacağı zaman (tabiki her hesaplama için geçerli deil) prg sourcesinde bir değişiklik yapmadan direk vt de değişiklik yaparak olayı halledebilrisini.
Kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

Merhabalar, cevaplar için teşekkür ederim.

Vt de bulunan tablo içinde 11 çeşit olay işleniyor. Yani bir olayın alabileceği 11 çeşit olay türü var ayrıca iz durumu için 'var' ve 'yok' olarak iki alabileceği durum var. İstatistik yıl içinde her ay işleniyor. Bu 11 çeşit olayları tablo içinden türüne göre arattırıp istatistikteki yerine toplamı rakamsal olarak girmemiz gerekiyor.

11 çeşit olay türü sorgulaması ve sonra bunların toplamı, 12 ay boyunca, ayrıca diğer istenilen alanların sorgulaması. Nasıl bi yol izlenmeli tavsiyeleriniz nedir.

......./ Evden Hırs./ işyerinden hır / otodan hır./..........11 adet/
ocak.......20.................10..................20
şubat
mart
......
şeklinde aylar alt alta, olay türleri yanyana, bunların yanına iz durumları toplamı, olay toplamları, diğer istenen istatistiki bilgiler diye uzuyor.

teşekkür ve saygılarla
onaydin

Mesaj gönderen onaydin »

Firebird'de
[if ler case olacak]

Kod: Tümünü seç

SELECT UNVAN, 
sum( IF ( TUR = 1, 1, 0 ) )  AS IKAZ,
sum( IF ( TUR = 2, 1, 0 ) )  AS UYARMA, 
sum( IF ( TUR = 3, 1, 0 ) )  AS KINAMA, 
count( TUR )  AS TOPLAM
FROM tablo
where ....
GROUP  BY UNVAN
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

Merhabalar.

Şimdiye kadar sql olayına gerektiği kadar yaklaşmıştım. Yani projedeki sorgulamaları çalıştıracak kadar. Şimdiden sonra ise fahrettin beyin yazdığı makale yardımı ile stok takip olaylarındaki triger ve sp lerle beraber yukarıdaki sorum gibi sql ile yapılacak işlemleri öğrenmeye çalışyorum. Benim soruma sitede bi örnek vardı o arkadaşım tarihler arasında istenen verileri sp şeklindemi ne dökümü almıştı. Yıl boyunca olan dökümlerini.

Burada kestiremediğim şey bu vt tarafında yazmam gereken sql cümlelerini hangi yerde yazacağım. Firebird ile ibexpert te düzenleme yapıyorum. Yani nereyi tıklayıp o alana yazacağımı bilmiyorum. Yoksa delphi tarafında ibdataset in selectsql kısmınamı yazmalıyım. Acemiliğimi bağışlayın. Öğrenme azmindeyim. Bu sorular kolay sorular size, fakat bizim için insanı bilmediği korkutur derler.

Teşekkür ve saygılarımla.
onaydin

Mesaj gönderen onaydin »

Efendim sql editor diye bir olay var üstte dosya kağıdı şeklinde bir simgesi var ona tıklıyorsunuz.(Kısayolu f12 imiş)
Bir pencere açılıyor oraya kodlarınızı yazıp işletmesi için açılan penceredeki sağa meyilli yeşil ok a tıklıyorsunuz ya da F9
Cevapla