Herkese merhaba. Benim calisanlar tablom mevcut. Tabloda calisanin verileri ve calisdigi yer ve calistigi pozisyon kodu bulunuyor.
Yapilmasi gereken :
Is yerlerinin pozisyonlarin ortalama aylık maaş indan daha az alan calisanlari listelemek. Elastic search kurulu. Ben hic bir cozum bulamadim/
En sonunda ortalama aylik maasdan daha az alan calisanlari elastic searchle getirip id leri alip whereIn le listelemeyi dusundum. Amma sorun var. Is yerlerinin pozisyonlari oldugu icin ve ayni is yeri tekrarlana bildigi icin. 2 group by olmasi lazim workplace ve position_code icin group by. Amma group by yapinca diger columnlarinda olmasi gerektigini soylluyor. nasil yapa bilirim. Nasil gruplaya bilirim sorunsuz?
Group by sorunu.
- Düzenlendi
CodeWriteson Bir alanı SELECT içine yazdığınızda ve GROUP BY kullandığınızda ya o alana SUM, COUNT, MIN, MAX, AVG vs. gibi bir aggregate yöntemi uygulayıp tek bir sonuca indireceksiniz ya da GROUP BY içerisinde kullanıp grup anahtarı olarak kullanacaksınız. Sizin yaptığınız hata tek bir sütuna birden değer karşılık geliyor, aggregate yapmamışsınız ama group by'a da eklememişsiniz. Ya tek satır sonuç olacak, sütun aggregate ile sıkıştırılmış olacak ya da group by'a ekleyeceksiniz, group sayısı kadar satır oluşacak. Mesela şöyle bir sonuç alıyorsunuz:
+--------+--------+--------+
| field1 | field2 | field3 |
+--------+--------+--------+
| 1 | | | \
| 1 | 2 | 3 | > Burası tek bir satır
| 3 | | | /
+--------+--------+--------+
Tabi alamıyorsunuz hata veriyor çünkü gördüğünüz gibi bir satır sonuç dönmüş ama field1 alanına 3 değer gelmeye çalışıyor. Yani field1 alanına ne aggregate uygulamışsınız ne de group by içine almışsınız. Eğer aggregate uygularsanız, mesela SUM, çalışan sorgu şu sonucu verir:
+--------+--------+--------+
| field1 | field2 | field3 |
+--------+--------+--------+
| 5 | 2 | 3 |
+--------+--------+--------+
yada concat uyguladınız:
+--------+--------+--------+
| field1 | field2 | field3 |
+--------+--------+--------+
| 1,1,3 | 2 | 3 |
+--------+--------+--------+
Eğer GROUP BY içine field1 dahil ederseniz ve field2 ve field3'ün de aggregate olduğunu varsayarsak da şunu almanız lazım:
+--------+--------+--------+
| field1 | field2 | field3 |
+--------+--------+--------+
| 1 | 1 | 2 |
| 3 | 1 | 1 |
+--------+--------+--------+
* Grup sayısı kadar satır oluştu
Yani grup yaparken seçtiğiniz alanların her sütuna bir değer gelecek şekilde dağıtılmasını sağlamanız lazım. Ya hepsi bür sütunda kümeleşecek ya da group sayısı kadar satır oluşacak.
mgsmus Aslinda ne dediginizi anladim ama cozum bulamiyorum. elastic searchden geriye aylik maasi ortalamadan dusuk olanlari id sin aldim . Simdi ana tabloyla baglantiyi nasil kurucam bilmiyorum.cunki position_code ve workplace cox sayida ayni. Query yi olusturamadim
CodeWriteson Sorunu cozdum herkese tesekkurler.