10 lu gruplayarak sql
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
10 lu gruplayarak sql
arkadaşlar mrb
elimde personellerin memuriyete ilk başlama tarihleri var. ben bundan hareketle memuriyete giriş tarihlerini 1-10 yıllıkları, 11-20 yıllıkları, 21-30 yıllıkları gruplayacak bir sql cümlesini nasıl yazabilirim.
ilk 1-10 yıllık gruplama için
SELECT mem_ilk_baslama,count(*) mem_ilk_sayisi FROM personel
group by mem_ilk_baslama having mem_ilk_baslama < NOW() - INTERVAL 3650 DAY');
şeklindeki bir sql cümlesi işimi görmedi
elimde personellerin memuriyete ilk başlama tarihleri var. ben bundan hareketle memuriyete giriş tarihlerini 1-10 yıllıkları, 11-20 yıllıkları, 21-30 yıllıkları gruplayacak bir sql cümlesini nasıl yazabilirim.
ilk 1-10 yıllık gruplama için
SELECT mem_ilk_baslama,count(*) mem_ilk_sayisi FROM personel
group by mem_ilk_baslama having mem_ilk_baslama < NOW() - INTERVAL 3650 DAY');
şeklindeki bir sql cümlesi işimi görmedi
ilk olarak bence tarih alanlarını yil olarak bul,
daha sonra bulduğun yılları year(bugün) den çıkar çıkan günler çalışma yıl süresi bunları da where koşulu ile kısıtlayabilirsin sonra da count ile toplattırırsınız.
Gün olayına giderseniz biraz daha uzar bu işlem
daha sonra bulduğun yılları year(bugün) den çıkar çıkan günler çalışma yıl süresi bunları da where koşulu ile kısıtlayabilirsin sonra da count ile toplattırırsınız.
Gün olayına giderseniz biraz daha uzar bu işlem
Bir kelimenin anlamını öğretsen bile yeter..



- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Selam...
- MySQL'de SELECT sonunda LIMIT a,b şeklinde bir ifade var.
- a sayısı Bulunan kayıtlar arasında gösterime ya da diğer bir deyişle sayfanın ilk kaydının sıra nosu, b sayısı ise kaç tane kayıt döndürüleceği...
- Bu başlığa ulaşıp da MySQL dışında başka bir veritabanıı kullanan arkadaşlar için kayıtlarda sayfalama işlemini nasıl yapabilirler hakkındaki şöyle bir üç kağıdı bildirelim..
- Burada ilk 10'den sonraki 10 kayıt alınır. Her sayfa için ikinci rakama ekleme yapılır. Parametrelerle bu rakamları değişken yapacaksınız. Her seferinde ikinci rakama gösterimdeki kayıt kadar ekleme yapacaksınız veya çıkarma yapacaksınız.
- İnsan isteyince oluyor, bunu planlamak oldukça zamanımı almıştı, sizlere faydası olsun, zaman kaybı olmasın
- MySQL'de SELECT sonunda LIMIT a,b şeklinde bir ifade var.
- a sayısı Bulunan kayıtlar arasında gösterime ya da diğer bir deyişle sayfanın ilk kaydının sıra nosu, b sayısı ise kaç tane kayıt döndürüleceği...
- Bu başlığa ulaşıp da MySQL dışında başka bir veritabanıı kullanan arkadaşlar için kayıtlarda sayfalama işlemini nasıl yapabilirler hakkındaki şöyle bir üç kağıdı bildirelim..

Kod: Tümünü seç
SELECT top 10 * FROM tabloadi WHERE idAlani not in (SELECT top 10 idAlani FROM tabloadi)
- İnsan isteyince oluyor, bunu planlamak oldukça zamanımı almıştı, sizlere faydası olsun, zaman kaybı olmasın

mrmarman arkadaş,
acaba ben soruyumu yanlış sordum diyorum bu nedenle yeniden açıklama gereği duydum.
kurumdaki personellerin memuriyete ilk başlama tarihlerinden hareketle bunların kaç yıldır memuriyettte olduklarını bulmak amacım. ancak her personelin kaç yıllık memur olacağı değilde örneğin memuriyeti 1-10 yıllık olanlar 12 kişi , memuriyeti 11-20 yıllık olanlar 34 kişi ..... şeklinde bir veriye ulaşmak istiyorum.
ilgilendiğiniz için teşekkürler.
acaba ben soruyumu yanlış sordum diyorum bu nedenle yeniden açıklama gereği duydum.
kurumdaki personellerin memuriyete ilk başlama tarihlerinden hareketle bunların kaç yıldır memuriyettte olduklarını bulmak amacım. ancak her personelin kaç yıllık memur olacağı değilde örneğin memuriyeti 1-10 yıllık olanlar 12 kişi , memuriyeti 11-20 yıllık olanlar 34 kişi ..... şeklinde bir veriye ulaşmak istiyorum.
ilgilendiğiniz için teşekkürler.
- Hocam pardon yaa uykusuzluğuma ver... Dün gece sabahladım telefon çalınca da erken kalkmak zorunda kaldım.
- Okuduğumla düşündüğüm farklı ...
- Önce her bir grubu elde edeceğin SQL cümlelerini hazırla ondan sonra bu cümleleri UNION ALL ile ard arda bağla... Örneğin...
- EDIT - Düzeltme...
- Diyeceksin ki sorum hariç herşeye cevap yazdın
Son sorunda rakamsal olarak istediğini görmemişim... Aslında işin çok kolaymış...
- Yukarda yazdığım her SQL'i SELECT satırında iç select olarak kullan ama şeklinde değişkenlere saydır. Sonunda da bu değişkenleri raporlarsın...
- Kusura bakma...
- Okuduğumla düşündüğüm farklı ...



- Önce her bir grubu elde edeceğin SQL cümlelerini hazırla ondan sonra bu cümleleri UNION ALL ile ard arda bağla... Örneğin...
Kod: Tümünü seç
'SELECT * FROM personel WHERE mem_ilk_baslama BETWEEN #01/01/1997# AND Date() ' // 01 - 10 yıllık personel
'SELECT * FROM personel WHERE mem_ilk_baslama BETWEEN #01/01/1987# AND #01/01/1997#' // 11-20 yıllık
'SELECT * FROM personel WHERE mem_ilk_baslama BETWEEN #01/01/1977# AND #01/01/1987#' // 21-30 yıllık
// şeklinde
// ondan sonra bunları UNION ALL ile ard arda bağlayacaksın...
'SELECT *, ''01-10 Yıllık'' AS Yillik FROM personel WHERE mem_ilk_baslama BETWEEN #01/01/1997# AND Date() '
'UNION ALL'
'SELECT *, ''11-20 Yıllık'' AS Yillik FROM personel WHERE mem_ilk_baslama BETWEEN #01/01/1987# AND #01/01/1997#'
'UNION ALL'
'SELECT *, ''21-30 Yıllık'' AS Yillik FROM personel WHERE mem_ilk_baslama BETWEEN #01/01/1977# AND #01/01/1987#''
- Diyeceksin ki sorum hariç herşeye cevap yazdın

- Yukarda yazdığım her SQL'i SELECT satırında iç select olarak kullan ama
Kod: Tümünü seç
SELECT Count(*) AS OnYillik ........
- Kusura bakma...

- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)