- QUERY fonksiyonu ne yapar, neden normal formüllerden farklıdır?
- Sorgu cümlesinin yapısı ve cümle sırası
- Adım adım ilk sorgu: süzme, toplama, sıralama
- Tarih, koşul ve hücre başvurusu ile dinamik sorgu
- Pivot ile çapraz tablo ve diğer ileri kullanımlar
- Sık yapılan hatalar ve çözümleri
- Bu beceriyi iş akışına yerleştirmek
- Sık sorulan sorular
QUERY ile Google E-Tablolar'da sorgu yazmanın adımları
Google Sheets QUERY fonksiyonunun söz dizimini, select, where, group by ve pivot cümlelerini örnek sorgularla ve sık hatalarla öğrenin.
QUERY fonksiyonu ne yapar, neden normal formüllerden farklıdır?
QUERY, bir hücre aralığına SQL'e benzeyen bir sorgu dili uygulayan Google Sheets fonksiyonudur. Üç bileşeni vardır: sorgulanacak veri aralığı, tırnak içinde yazılan sorgu metni ve isteğe bağlı olarak veri aralığının tepesindeki başlık satırı sayısı. Sorgu dili, Google'ın Visualization API Query Language adlı dilidir; yani öğrendiğiniz söz dizimi yalnızca Sheets'e özgü bir kısayol değil, belgelenmiş bir sorgu dilidir.
Normal formüllerde süzme, toplama ve sıralama için ayrı ayrı fonksiyon zincirleri kurarsınız. QUERY'de aynı işi tek bir cümlede anlatırsınız: hangi sütunlar gelsin, hangi koşulu sağlayan satırlar kalsın, neye göre gruplansın, nasıl sıralansın. Sonuç, formülün yazıldığı hücreden aşağı ve sağa doğru kendiliğinden dökülen bir tablodur. Kaynak veri değiştikçe sonuç tablosu da yenilenir; bu yüzden QUERY, elle kopyalanan özet tabloların yerine canlı bir rapor katmanı kurmak için kullanılır.
Dikkat edilecek ilk kural veri tipidir. Resmî belgeye göre veri aralığındaki her sütun yalnızca bir tipte değer taşımalıdır: mantıksal, sayısal (tarih ve saat dahil) ya da metin. Bir sütunda tipler karışıksa çoğunluk tipi sütunun tipini belirler, azınlıktaki değerler boş sayılır. Metin olarak girilmiş sayılar bu yüzden sorguda sessizce kaybolur ve toplamlar eksik çıkar.
Sorgu cümlesinin yapısı ve cümle sırası
Sorgu metni, aşağıdaki cümlelerden (clause) oluşur ve hepsi isteğe bağlıdır. Ancak sıra sabittir; sırayı bozarsanız formül hata verir:
- select: hangi sütunlar ve hesaplamalar dönecek
- where: hangi satırlar sorguya girecek
- group by: hangi sütuna göre gruplanacak
- pivot: hangi sütunun değerleri sütun başlığına dönüşecek
- order by: sonuç nasıl sıralanacak
- limit ve offset: kaç satır dönecek, kaçıncı satırdan başlanacak
- label: sütun başlıkları nasıl adlandırılacak
- format: sayı ve tarih görünümü
- options: ek seçenekler
Pratikte hatırlamanın kolay yolu şudur: önce seçersiniz, sonra süzersiniz, sonra gruplarsınız, sonra sıralarsınız, en son görünümü düzenlersiniz. Sütunlar sorguda Sheets'in kendi harfleriyle anılır: A, B, C gibi. Başlık metniyle sütun çağıramazsınız; belgede de sütunların etiketle değil tanımlayıcıyla anılması gerektiği vurgulanır.
Hücre değeri metinse tek tırnak içinde, tarihse date sözcüğü ve yıl-ay-gün biçimiyle yazılır. Sorgu metninin kendisi çift tırnak içinde olduğundan, içerideki metin kıstasları tek tırnak kullanır. Bu ayrıntı, ilk hatalı formüllerin en yaygın nedenidir.
Adım adım ilk sorgu: süzme, toplama, sıralama
Örneğin satış verinizin A sütununda temsilci adı, B sütununda şehir, C sütununda tutar, D sütununda sipariş tarihi olsun. Veri aralığınız A:D olsun ve ilk satırda başlıklar bulunsun.
İlk adımda sadece istenen sütunları çekmek: =QUERY(A:D; "select A, C")
Sonra koşul eklemek. Yalnızca belirli bir şehrin satırlarını görmek için: =QUERY(A:D; "select A, C where B = 'Ankara'")
Ardından toplama. Her temsilcinin toplam tutarını görmek için sütunları ve gruplamayı birlikte yazarsınız: =QUERY(A:D; "select A, sum(C) where B = 'Ankara' group by A")
Sıralamada en yüksekten en düşüğe sıralamak: =QUERY(A:D; "select A, sum(C) where B = 'Ankara' group by A order by sum(C) desc")
Son olarak başlığı okunur kılmak. Toplama sütununun başlığı varsayılan olarak teknik görünür; label cümlesiyle düzeltirsiniz: =QUERY(A:D; "select A, sum(C) where B = 'Ankara' group by A order by sum(C) desc label sum(C) 'Toplam satış'")
Bölgesel ayara göre bağımsız değişkenleri ayıran karakter virgül ya da noktalı virgül olabilir; formül çubuğunun kabul ettiği karakteri kullanın. Her adımdan sonra sonucu kontrol edin: gruplamada select içindeki toplanmayan her sütunun group by içinde de bulunması gerekir, aksi halde sorgu çalışmaz.
Tarih, koşul ve hücre başvurusu ile dinamik sorgu
Sorguyu sabit metinle bırakmak, her değişiklikte formülü yeniden yazmak demektir. Daha kullanışlı olan, kıstasları hücrelerden okutmaktır. Örneğin Adlandırılmış bir hücreye (örneğin sehir_secimi adlı) şehir adını yazdırıp sorguyu birleştirirsiniz: =QUERY(A:D; "select A, sum(C) where B = '" & sehir_secimi & "' group by A")
Metin birleştirmede tek tırnakların sorgu içinde kaldığına dikkat edin. Sayısal kıstaslarda tırnak gerekmez, tarihlerde ise date sözcüğü ve biçim gerekir. Hücredeki tarihi doğrudan sorguya yapıştırmak çalışmaz; önce TEXT fonksiyonuyla yıl-ay-gün biçimine çevirmeniz gerekir: ="select A, C where D >= date '" & TEXT(baslangic_tarihi; "yyyy-mm-dd") & "'"
Tarih işlemleri için sorgu dilinin kendi fonksiyonları da vardır: year, month, day, quarter, dayOfWeek ve benzerleri. Burada bir tuzak vardır: month fonksiyonu sıfırdan başlar, yani ocak ayını sıfır olarak döndürür. Aylık rapor kuruyorsanız sonuca bir eklemeniz ya da sonucu ayrıca adlandırmanız gerekir. dayOfWeek ise pazar gününü bir sayar.
Sorgu metnini tek hücrede tutup QUERY'nin ikinci bağımsız değişkeni olarak o hücreye başvurmak da mümkündür. Uzun sorguları böyle ayırmak, hem okunabilirliği hem hata ayıklamayı kolaylaştırır.
Pivot ile çapraz tablo ve diğer ileri kullanımlar
Pivot cümlesi, bir sütundaki ayrık değerleri sütun başlığına çevirir. Aylık ya da şehir bazlı çapraz tablo için pivot tablo menüsüne gitmeden formülle çalışabilirsiniz: =QUERY(A:D; "select A, sum(C) group by A pivot B")
Bu sorguda her satır bir temsilciyi, her sütun bir şehri gösterir; kesişim toplam tutardır. Pivot cümlesi yalnızca group by ile birlikte anlamlıdır ve aggregation yapan bir select ister.
Birkaç sayfadaki veriyi tek sorguda birleştirmek için süslü parantezle dikey birleştirme kullanılır ve QUERY bu birleşik sonuç üzerinde çalışır; bu durumda sütunlar artık orijinal harflerini değil birleşik aralığın sıra karşılığı olan Col ile başlayan adları taşır. Resmî belge, sütunlara hem A, B biçiminde hem de Col notasyonuyla başvurulabildiğini söyler. Başka bir dosyadaki veriyi sorgulamak istiyorsanız IMPORTRANGE ile aralığı çekip QUERY içine yerleştirebilirsiniz.
Aggregation fonksiyonlarının sınırını bilmek gerekir: avg, count, max, min ve sum yalnızca tek bir sütun tanımlayıcısı alır. İki sütunun toplamının toplamı gibi bir ifade doğrudan yazılamaz; böyle durumlarda hesaplamayı veri tarafında yardımcı bir sütunda yapın.
Sık yapılan hatalar ve çözümleri
En sık karşılaşılan hata, sütun tipinin karışmasıdır. Tarih sütununa elle girilmiş bir metin satırı varsa sorgu o satırı boş sayar ve toplam eksik çıkar. Çözüm, sütunu temizlemek ya da sorguda karşılaştırma yapmadan önce tipleri düzeltmektir.
İkinci hata, başlık satırı tahminidir. Başlık sayısı verilmezse Sheets tahmin yürütür; çok satırlı başlıklarda ya da veri ilk satırdan başlıyorsa tahmin yanlış olabilir. Belgeye göre bağımsız değişken verilmezse ya da eksi bir değeri verilirse fonksiyon başlık sayısını tahmin eder. Sonucun ilk satırı başlık gibi davranıyorsa üçüncü bağımsız değişkeni elle girin.
Üçüncü hata, cümle sırasını karıştırmaktır. Örneğin order by cümlesini where cümlesinden önce yazarsanız sorgu hata verir. Dördüncü hata tırnaklardır: sorgunun çift tırnağı içinde metin kıstası tek tırnakla yazılır; hücre başvurusunu birleştirirken bu tırnakları unutmak formülü bozar.
Beşinci hata, büyük veri aralığında tüm sütunları (A:Z gibi) sorgulamak ve sonuçta yalnızca birkaçını kullanmaktır. Aralığı gerçek ihtiyaca daraltmak, tabloyu hem hızlandırır hem de yanlış sütunu seçme riskini azaltır. Sorguyu yazdıktan sonra sonuçtan birkaç satırı elle hesaplayıp doğrulamak en güvenli alışkanlıktır.
Bu beceriyi iş akışına yerleştirmek
QUERY, tekrar eden raporlama işinde değer üretir: haftalık satış özeti, kategori bazlı gider tablosu, başvuru formundan gelen yanıtların süzülmüş görünümü. Bir ekip için en sağlam düzen, ham verinin ayrı bir sayfada durması, QUERY'lerin ise yalnızca rapor sayfasında yaşamasıdır. Böylece biri ham veriyi yanlışlıkla bozmaz ve rapor sayfası her zaman kaynaktan üretilir.
Mindset'in Google Workspace Verimlilik eğitiminde Docs, Sheets ve Slides ile iş birliği, Google Forms ve Workspace otomasyonu modülleri yer alır; Google Workspace ve Gemini programında ise Sheets ile veri analizi ve raporlama bir modül olarak işlenir. Bu içerikler, ofiste e-tablo ile raporlama yapan, ancak formül zincirlerinden sorgu mantığına geçmek isteyen analist, asistan ve ekip yöneticileri için uygundur. Kurumsal ekiplerde ortak bir rapor sayfası standardı kurmak istendiğinde de aynı yapı kullanılabilir.
İlgili Mindset programı
Google Workspace Verimlilik
Sık sorulan sorular
QUERY fonksiyonu SQL bilmeden öğrenilir mi?
Evet. select, where, group by ve order by sözcükleri SQL'e benzediği için SQL bilmek yardımcı olur, ama şart değildir. Önce yalnızca select ve where ile başlayıp sonuç tablosunu gözlemleyerek öğrenebilirsiniz. Sonra group by ve order by eklersiniz. QUERY'de öğrendiğiniz mantık, ileride SQL öğrenirken de doğrudan işinize yarar.
QUERY ile başka bir dosyadaki veri sorgulanabilir mi?
Evet. IMPORTRANGE ile başka bir dosyadan çekilen aralık, QUERY'nin veri bağımsız değişkeni olarak verilebilir. Bu durumda sütunlar harf yerine Col ile başlayan adlarla anılır. İlk kullanımda dosyalar arası erişim izni istenir. Kaynak dosyadaki erişim yetkisi kalkarsa sorgu da hata verir.
QUERY mi pivot tablo mu daha uygun?
Pivot tablo, keşif ve hızlı özet için görsel arayüz sunar. QUERY ise aynı özeti formülle, tekrarlanabilir ve başka formüllere bağlanabilir biçimde üretir. Rapor sayfasını başkalarıyla paylaşıyor ve her hafta yeniliyorsanız QUERY, tek seferlik inceleme yapıyorsanız pivot tablo genellikle daha pratiktir.
QUERY sonucunda başlık satırı neden bozuluyor?
Başlık sayısı bağımsız değişkeni verilmediğinde Sheets başlık satırı sayısını tahmin eder. Veri aralığınızda birden çok başlık satırı varsa ya da ilk sütun karışık tipteyse tahmin yanlış çıkar. Üçüncü bağımsız değişkenle başlık sayısını elle belirtmek sorunu çözer. Karışık tipli sütunları da önceden temizlemek gerekir.
Where cümlesinde birden fazla koşul nasıl yazılır?
Koşullar and ve or sözcükleriyle bağlanır, gerektiğinde parantezle gruplanır. Örneğin şehir belirli bir değere eşitken tutar da belirli bir sınırın üstündeyse satır kalır. Metin kıstasları tek tırnak içinde yazılır. and ve or birlikte kullanıldığında parantez, hangi koşulların birlikte değerlendirileceğini açıkça belirler.