alanları guruplayarak toplama

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
yusuf
Üye
Mesajlar: 139
Kayıt: 20 Tem 2005 11:05
Konum: İSTANBUL

Mesaj gönderen yusuf »

Kod: Tümünü seç

with DataHASTALIK.IsratistikRaporQry do 
begin 
    Close; 
   SQL.Clear; 
   Sql.Add('SELECT HASTALIK_TURU,KAYIT_TARIHI,SUM(BIR_ONIKI_AY_ERKEK),'SUM(BIR_ONIKI_AY_KADIN)'+ 
   'SUM(BIR_YAS_ERKEK),'+'SUM(BIR_YAS_KADIN),'+ 
   'SUM(IKI_YAS_ERKEK),SUM(IKI_YAS_KADIN)'+ 
   'SUM(UC_YAS_ERKEK),SUM(UC_YAS_KADIN),SUM(DORT_YAS_ERKEK),SUM(DORT_YAS_KADIN),'+ 
   'SUM(BES_YAS_ERKEK),SUM(BES_YAS_KADIN),SUM(ALTI_YAS_ERKEK),SUM(ALTI_YAS_KADIN),'+ 
   'SUM(YEDI_ONDORT_YAS_ERKEK),SUM(YEDI_ONDORT_YAS_KADIN),'+ 
   'SUM(ONBES_YIRMIDORT_YAS_ERKEK),SUM(ONBES_YIRMIDORT_YAS_KADIN),'+ 
   'SUM(YIRMIBES_OTUZDORT_YAS_ERKEK),SUM(YIRMIBES_OTUZDORT_YAS_KADIN),'+ 
   'SUM(OTUZBES_KIRKDOKUZ_YAS_ERKEK),SUM(OTUZBES_KIRKDOKUZ_YAS_KADIN),'+ 
   'SUM(ELLI_ELLIDOKUZ_YAS_ERKEK),SUM(ELLI_ELLIDOKUZ_YAS_KADIN),'+ 
   'SUM(ALTMIS_ALTMISDORT_YAS_ERKEK),SUM(ALTMIS_ALTMISDORT_YAS_KADIN),'+ 
   'SUM(ALTMISBES_USTU_ERKEK),SUM(ALTMISBES_USTU_KADIN)'+ 
   'FROM hastalık_istatistik '); 
 Sql.Add('GROUP BY HASTALIK_TURU'); 
   Open; 
end;
Arkadaşlar Çok Sağolun Oldu Çalışıyor. Şimdi burada tarih aralığında kısıtlayabilirmiyim bu sorguyu.
yusuf
Üye
Mesajlar: 139
Kayıt: 20 Tem 2005 11:05
Konum: İSTANBUL

Mesaj gönderen yusuf »

Close;
SQL.Clear;
Sql.Add('select * from randevu where KAYIT_TARIHI>=:baslangic and KAYIT_TARIHI<=:bitis );
ParamByName('baslangic').Asdate :=MonthCalendar1.Date;
ParamByName('bitis').Asdate :=MonthCalendar1.Date;
Prepare;
Open;

Yukarıdaki Sorguya Bunu Ekleyebilirmiyim.
Kullanıcı avatarı
hbahadir
Kıdemli Üye
Mesajlar: 544
Kayıt: 06 Ara 2004 05:03
Konum: BURSA idi artık İST.
İletişim:

Mesaj gönderen hbahadir »

select kullanımı

Kod: Tümünü seç

Syntax	SELECT [TRANSACTION transaction]
	[DISTINCT | ALL] 
	{* | <val> [, <val> …]}
	[INTO :var [, :var …]]
	FROM <tableref> [, <tableref> …]
	[WHERE <search_condition>]
	[GROUP BY col [COLLATE collation] [, col [COLLATE collation] …] 
	[HAVING <search_condition>] 
	[UNION <select_expr> [ALL]]
	[PLAN <plan_expr>]
	[ORDER BY <order_list>]
	[FOR UPDATE [OF col [, col …]]];
arkadaşlar lütfen bir soru sormadan arama seçeneği ile aratmayı ihmal etmeyelim..
En son hbahadir tarafından 11 Eyl 2006 10:32 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

group by dan sonra having eklemelisiniz:

Kod: Tümünü seç

...
HAVING KAYIT_TARIHI>=:baslangic and KAYIT_TARIHI<=:bitis
....
yusuf
Üye
Mesajlar: 139
Kayıt: 20 Tem 2005 11:05
Konum: İSTANBUL

Mesaj gönderen yusuf »

Arkadaşlar çok teşekkürler. naile hocam çok sağol.
yusuf
Üye
Mesajlar: 139
Kayıt: 20 Tem 2005 11:05
Konum: İSTANBUL

Mesaj gönderen yusuf »

naile hocam dediğiniz şekilde yaptım fakat Operation not applicable hatası veriyor
doganzorlu
Kıdemli Üye
Mesajlar: 395
Kayıt: 22 Tem 2004 09:15
Konum: İzmir
İletişim:

Mesaj gönderen doganzorlu »

Selam,

HAVING, sadece group by da belirtilmeyen sahar için kullanılır. Group by da verilen alanlar WHERE içinde verilir.

Yani GROUP BY WHERE ve HAVING birlikte kullanılır bu gibi durumlarda.
Doğan Zorlu, İzmir

------------------------
"Bu Kitap'ı sana yalnız şunun için indirdik: Hakkında ayrılığa düştükleri şeyi onlara iyice açıklayasın ve Kitap, iman eden bir topluluk için kılavuz ve rahmet olsun." (NAHL 64)
yusuf
Üye
Mesajlar: 139
Kayıt: 20 Tem 2005 11:05
Konum: İSTANBUL

Mesaj gönderen yusuf »

Kod: Tümünü seç

with DataHASTALIK.IsratistikRaporQry do 
begin 
Close; 
SQL.Clear; 
Sql.Add('SELECT HASTALIK_TURU,KAYIT_TARIHI,SUM(BIR_ONIKI_AY_ERKEK),'SUM(BIR_ONIKI_AY_KADIN)'+ 
'SUM(BIR_YAS_ERKEK),'+'SUM(BIR_YAS_KADIN),'+ 
'SUM(IKI_YAS_ERKEK),SUM(IKI_YAS_KADIN)'+ 
'SUM(UC_YAS_ERKEK),SUM(UC_YAS_KADIN),SUM(DORT_YAS_ERKEK),SUM(DORT_YAS_KADIN),'+ 
'SUM(BES_YAS_ERKEK),SUM(BES_YAS_KADIN),SUM(ALTI_YAS_ERKEK),SUM(ALTI_YAS_KADIN),'+ 
'SUM(YEDI_ONDORT_YAS_ERKEK),SUM(YEDI_ONDORT_YAS_KADIN),'+ 
'SUM(ONBES_YIRMIDORT_YAS_ERKEK),SUM(ONBES_YIRMIDORT_YAS_KADIN),'+ 
'SUM(YIRMIBES_OTUZDORT_YAS_ERKEK),SUM(YIRMIBES_OTUZDORT_YAS_KADIN),'+ 
'SUM(OTUZBES_KIRKDOKUZ_YAS_ERKEK),SUM(OTUZBES_KIRKDOKUZ_YAS_KADIN),'+ 
'SUM(ELLI_ELLIDOKUZ_YAS_ERKEK),SUM(ELLI_ELLIDOKUZ_YAS_KADIN),'+ 
'SUM(ALTMIS_ALTMISDORT_YAS_ERKEK),SUM(ALTMIS_ALTMISDORT_YAS_KADIN),'+ 
'SUM(ALTMISBES_USTU_ERKEK),SUM(ALTMISBES_USTU_KADIN)'+ 
'FROM hastalık_istatistik '); 
Sql.Add('GROUP BY HASTALIK_TURU'); 
Sql.Add('HAVING KAYIT_TARIHI>=:baslangic and KAYIT_TARIHI<=:bitis')

Doğan Hocam Yanlışlıgı düzeltebilirmisiniz acaba yanlışlık nerede
yusuf
Üye
Mesajlar: 139
Kayıt: 20 Tem 2005 11:05
Konum: İSTANBUL

Mesaj gönderen yusuf »

naile hocam having yanlışmı kullanıyorum acaba
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

doganzorlu yazdı:...
HAVING, sadece group by da belirtilmeyen sahar için kullanılır. Group by da verilen alanlar WHERE içinde verilir.

Yani GROUP BY WHERE ve HAVING birlikte kullanılır bu gibi durumlarda.
Hocam bir yanlışlık olmasın :?:

Kod: Tümünü seç

select alan_adi, count(*) from tablo
group by alan_adi
having count(*) > 5
satır sayısı 5 den büyük olanları ver şeklinde de diğer şekilde de (olan alanın kıyaslanması vs.) kullanabiliyoruz. :wink:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
yusuf
Üye
Mesajlar: 139
Kayıt: 20 Tem 2005 11:05
Konum: İSTANBUL

Mesaj gönderen yusuf »

Hocam Hastalık türüne göre guruplama ya kadar oldu fakat ben tarih aralığında sınırlama yapmak istiyorum Where ile olmadı naile hocam having le yapılması gerekli dedi denedim yine olmadı

Sql.Add('GROUP BY HAVİNG HASTALIK_TURU KAYIT_TARIHI>=:baslangic and KAYIT_TARIHI<=:bitis'); Bu şekildemi kullanmam gerekiyor.
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

yusuf yazdı:...
Sql.Add('GROUP BY HAVİNG HASTALIK_TURU KAYIT_TARIHI>=:baslangic and KAYIT_TARIHI<=:bitis'); Bu şekildemi kullanmam gerekiyor.
hatalı kullanmışsın ve HAVİNG (büyük i li olmuş) :!:

İstersen HAVING kullanmayıp;

Kod: Tümünü seç

Sql.Add('WHERE KAYIT_TARIHI>=:baslangic and KAYIT_TARIHI<=:bitis'); 
şeklinde de kullanabilirsin :wink:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
hbahadir
Kıdemli Üye
Mesajlar: 544
Kayıt: 06 Ara 2004 05:03
Konum: BURSA idi artık İST.
İletişim:

Mesaj gönderen hbahadir »

yukarıda select syntax'ını yazmıştım where ' i doğru yere mi yazıyorsunuz?
yusuf
Üye
Mesajlar: 139
Kayıt: 20 Tem 2005 11:05
Konum: İSTANBUL

Mesaj gönderen yusuf »

Sql.Add('WHERE KAYIT_TARIHI>=:baslangic and KAYIT_TARIHI<=:bitis'); Bu şekilde yaptığımda
Operation not applicable hatası veriyor hocam
Kullanıcı avatarı
hbahadir
Kıdemli Üye
Mesajlar: 544
Kayıt: 06 Ara 2004 05:03
Konum: BURSA idi artık İST.
İletişim:

Mesaj gönderen hbahadir »

bu satırı group by ın neresine yazıyorsun, parametreleri gönderiyor musun?
Cevapla