Sorgu Dili Referansı (Sürüm 0.7)

Google Görselleştirme API'sı Sorgu Dili, veri kaynağına yapılan sorguyla çeşitli veri manipülasyonlarını gerçekleştirmenize olanak tanır.

İçindekiler

Giriş

Genellikle görselleştirmeler, verileri belirli bir biçimde bekler. Örneğin, bir pasta grafik, metin etiketi ve sayısal değer olmak üzere iki sütun halinde veri bekleyebilir. Veri kaynağındaki veriler bu yapıyla tam olarak eşleşmeyebilir. Örneğin, veri kaynağında ikiden fazla sütun olabilir veya sütunların sırası pasta grafiğin beklediği sıralamayla eşleşmeyebilir.

Sorgu dili, veri kaynağına veri manipülasyonu ve biçimlendirme istekleri gönderme ve döndürülen veri yapısının ve içeriğin beklenen yapıyla eşleştiğinden emin olma özelliğini sağlar.

Sorgu dilinin söz dizimi SQL'e benzer. SQL'e aşina olan geliştiriciler bu sorgu dilini hızlıca öğrenip kullanabilirler. Web'de SQL eğitimleri bulabilirsiniz. Söz dizimi bölümünde açıklanan bu sorgu dili ile SQL arasında bazı farklılıklar vardır.

Veri kaynaklarının sorgu dilini uygulamak için gerekli olduğunu veya uyguladıkları durumlarda dilin tüm özelliklerini uygulamak zorunda olmadıklarını unutmayın. Başka bir neden olarak düşünülmediği sürece bu dilin tüm özelliklerini uygulamak için bir veri kaynağına güvenmemeniz gerekir.

Sorgu Dilini Kullanma

Bir veri kaynağı isteğine sorgu dizesini iki şekilde ekleyebilirsiniz: Sorgu kodunu JavaScript kodu içinden ayarlamak veya sorgu dizesini veri kaynağı URL'sinde bir parametre olarak ayarlamak. İsteğiniz bir sorgu dizesi içermiyorsa veri kaynağının varsayılan davranışı, varsayılan satır/sütun düzeni ve biçimlendirmesini kullanarak tüm satır ve sütunları döndürmektir. Bunu, isteğinize bir veri kaynağına sorgu dizesi ekleyerek değiştirebilirsiniz.

JavaScript'ten Sorgu Ayarlama

Sorgu dizesini JavaScript kodunun içinden ayarlamak için google.visualization.Query sınıfının setQuery yöntemini çağırın.

var query = new google.visualization.Query(DATA_SOURCE_URL);
query.setQuery('select dept, sum(salary) group by dept');
query.send(handleQueryResponse);

Veri Kaynağı URL'sinde Sorgu Ayarlama

Sorgu dizesi, tq parametresi kullanılarak veri kaynağı URL'sine eklenebilir. Sorguyu JavaScript yerine URL parametresinde ayarlamak, diğer geliştiriciler tarafından yazılan görselleştirmeleri kolayca kullanmanıza ve yine de sorguyu özelleştirmenize olanak tanır.

Sorgu dizesi doğru şekilde bir URL parametresi olarak kodlanmalıdır. JavaScript encodeURIComponent işlevini kullanarak bir URL'yi kodlayabilir veya bu bölümün sonundaki kodlama aracını kullanarak URL'yi elle kodlayabilirsiniz.

Örnek:

Bir Google E-Tablosu için aşağıdaki sorgu dizesini düşünün. (E-tablolardaki sütun kimliklerinin her zaman harf olduğunu unutmayın. Yayınlanan e-tabloda gösterilen sütun başlığı metni kimlik değil, etikettir. Sorgu dizenizde etiketi değil, kimliği kullanmanız gerekir.)

select A, sum(B) group by A

Kodlandığında bu sorgu haline gelir:

select%20A%2C%20sum(B)%20group%20by%20A

E-tablonuzun URL'si olduğunu varsayalım:

https://docs.google.com/a/google.com/spreadsheets/d/1r8_mfnZAvTFmT02JHi1XgOwn_-sLCR9XgmR8wEQ4uW4

Son sorgu dizenizi almak için e-tablo URL'sine /gviz/tq?tq=YOUR_QUERY_STRING ekleyin:

https://docs.google.com/a/google.com/spreadsheets/d/1r8_mfnZAvTFmT02JHi1XgOwn_-sLCR9XgmR8wEQ4uW4/gviz/tq?tq=select%A%2C%20sum(B)%20group%20by%20A

Bir sorgu dizesini kodlamak veya kodunu çözmek için aşağıdaki aracı kullanın:

Not: Özel e-tablo verilerine erişmek için OAuth kullanılarak açık yetkilendirme kimlik bilgilerinin iletilmesi gerekir. Daha fazla bilgi için Google E-Tablolar: Yetkilendirme bölümüne bakın.

Dil Söz Dizimi

Genel bakış

Google Görselleştirme API'sı Sorgu Dili söz dizimi, SQL söz dizimine benzer şekilde tasarlanmıştır. Bununla birlikte, SQL'in bir alt kümesidir. Bu sürümde, öğrenmeniz gereken birkaç özellik bulunur. SQL'e aşinaysanız öğrenmesi çok zor olmamalıdır.

Veri Tabloları

Bu dokümanda, bir sorgunun sonuç kümesinden bahsedilmesi için veri tablosu terimi kullanılır. Veri tablosu, satır ve sütunlardan oluşur. Veri tablosundaki her bir sütun aşağıdaki özelliklere sahiptir:

  • Tanımlayıcı (veya sütun kimliği). Sorgudaki sütunlara referans vermek için kullanılır. Bir sorguda hiçbir zaman etikete göre sütuna referans vermemeniz gerektiğini, yalnızca tanımlayıcıya göre hareket etmeniz gerektiğini unutmayın. İpucu: Boşluk içeren herhangi bir kimlik kullanmayın. Alanların yönetilmesi zordur ve kodlamanızda küçük ama zor hatalar yapmanıza neden olabilir. Ayrıca, boşluk içeren bir kimlik için çift tırnak işareti seçilmelidir.
  • Etiket. Genellikle son kullanıcılara gösterilen bir string. Örneğin, pasta grafikte bir açıklama veya tablodaki bir sütun başlığı olabilir.
  • Veri türü. Desteklenen veri türleri şunlardır: string, number, boolean, date, datetime ve timeofday. Bir sütunun tüm değerleri, sütun türüyle eşleşen bir veri türüne veya null değerine sahip olur. Bu türler, bu sayfanın Edebiyatlar bölümünde açıklanan JavaScript türlerine benzer ancak aynı değildir.
  • Biçimlendirme kalıbı. Veri kaynağı, sütunlarının bazıları veya tümü için biçimlendirme kalıpları tanımlayabilir. Bir biçim ifadesi ekleyerek bu kalıbı geçersiz kılabilirsiniz.

Tüm örneklerde kullanılan tablo:

Bu bölümde, tüm sorgu örnekleri aşağıdaki tabloya yöneliktir. Sütun başlıkları, sütun tanımlayıcılarıdır.

ad
string
ayrıntı
string
öğle saati
timeofday
maaş
number
işe alma tarihi
date
yaş
number
Yaşlı
boolean
yaşlılıkBaşlangıç Zamanı
datetime
CemEng12:00:00
1.000
2005-03-1935true02.12.2007 15:56:00
DaveEng12:00:00
500
2006-04-1927yanlışboş
SelinEng13:00:00
600
2005-10-1030yanlışboş
BerkSatış12:00:00
400
2002-10-1032true09.03.2005 12:30:00
DanaSatış12:00:00
350
2004-09-0825yanlışboş
MehmetMarketing13:00:00
800
2005-01-1024true30.12.2007 14:40:00

Dil Maddeleri

Sorgu dilinin söz dizimi aşağıdaki maddelerden oluşur. Her cümle bir veya iki anahtar kelimeyle başlar. Tüm maddeler isteğe bağlıdır. Maddeler boşluklarla ayrılır. Maddelerin sırası aşağıdaki gibi olmalıdır:

Madde Kullanım
select Hangi sütunların hangi sırayla döndürüleceğini seçer. Atlanırsa tablonun tüm sütunları varsayılan sırada döndürülür.
where Yalnızca bir koşulla eşleşen satırları döndürür. Atlanırsa tüm satırlar döndürülür.
group by Satırlardaki değerleri toplar.
pivot Sütunlardaki farklı değerleri yeni sütunlara dönüştürür.
order by Satırları sütunlardaki değerlere göre sıralar.
limit Döndürülen satır sayısını sınırlar.
offset Belirli sayıda ilk satırı atlar.
label Sütun etiketlerini ayarlar.
format Belirtilen biçimlendirme kalıplarını kullanarak belirli sütunlardaki değerleri biçimlendirir.
options Ek seçenekleri belirler.
from from yan tümcesi dilden çıkarıldı.

 

Seç

select yan tümcesi, döndürülecek sütunları ve sıralarını belirtmek için kullanılır. Bu yan tümce belirtilmezse veya select * kullanılırsa veri kaynağı tablosunun tüm sütunları orijinal sırasıyla döndürülür. Sütunlara tanımlayıcılar tarafından referans verilir (etiketlere göre değil). Örneğin, bir Google E-Tablosunda sütun tanımlayıcıları bir veya iki karakterlik sütun harfleridir (A, B, C, ...).

select koşulundaki öğeler sütun tanımlayıcıları veya toplama işlevleri, skaler işlevler veya operatörlerin sonucu olabilir.

Örnekler:

select *
select dept, salary
select max(salary)

Aşağıdaki örnekte çift tırnak, boşluk (e-posta adresi) içeren veya ayrılmış kelimeler (tarih) içeren sütun kimliklerine referans vermek için kullanılır:

select `email address`, name, `date`

Örnek tabloda şu sorguyu çalıştırın:

select lunchTime, name

Aşağıdaki yanıtı döndürür:

öğle saati ad
12:00:00Cem
12:00:00Dave
13:00:00Selin
12:00:00Berk
12:00:00Dana
13:00:00Mehmet

Yer

where koşulu yalnızca belirli bir koşulla eşleşen satırları döndürmek için kullanılır.

Basit karşılaştırma operatörleri <=, <, >, >=, =, !=, <>. İki karşılaştırma operatörü de != <> eşit olmayan anlamına gelir. Dizeler, sözlük değeri ile karşılaştırılır. Eşitliğin = ile gösterildiğini, çoğu bilgisayar dilinde olduğu gibi == olmadığını unutmayın. null ile karşılaştırma, is null veya is not null kullanılarak yapılır.

and, or ve not mantıksal operatörlerini kullanarak birden fazla koşulu birleştirebilirsiniz. Parantezler, açık önceliği tanımlamak için kullanılabilir.

Bu yan tümce, bazı daha karmaşık dize karşılaştırma operatörlerini de destekler. Bu operatörler iki dizeyi bağımsız değişken olarak alır. Dize olmayan bağımsız değişkenler (ör. tarihler veya sayılar) karşılaştırmadan önce dizelere dönüştürülür. Dize eşleşmesi büyük/küçük harfe duyarlıdır (bunun üstesinden gelmek için upper() veya lower() skaler işlevleri kullanabilirsiniz).

  • contains - Bir alt dize eşleşmesi. Tam contains bölüm, tamamının herhangi bir yerindeyse doğrudur. Örnek: where name contains 'John'; "John", "John Adams", "Uzun John Silver" ile eşleşir ancak "john Adams" ile eşleşmez.
  • starts with - Ön ek eşleşmesi. değer starts with önek, değer'in başındaysa doğrudur. Örnekler: where dept starts with 'engineering', "mühendislik" ve "mühendislik yöneticileri" ile eşleşir. where dept starts with 'e'; "engineering", "eng" ve "e" ile eşleşir.
  • ends with - Bir son ek eşleşmesi. değer sonek değeri son'un sonundaysa doğrudur. Örnek: where role ends with 'y' "cowboy", "boy" ve "y" ile eşleşir.
  • matches - A (önceden) normal ifade eşleşmesi. haystack needle içindeki normal ifade haystack ile eşleşiyorsa needle doğru değerini alır. Örnekler: where country matches '.*ia' Hindistan ve Nijerya ile eşleşir, ancak Indiana ile eşleşmez. Bunun genel bir arama olmadığını, dolayısıyla where country matches 'an' "Kanada" ile eşleşmeyeceğini unutmayın.
  • like - İki joker karakteri destekleyen bir metin araması: Herhangi bir karakterle sıfır veya daha fazla karakterle eşleşen % ve her karakterle eşleşen _ (alt çizgi) karakteri. Bu, SQL LIKE operatörüne benzer. Örnek: where name like fre% "fre", "fred" ve "freddy" ile eşleşir.

Örnekler:

where salary >= 600
where dept != 'Eng' and date '2005-01-21' < hireDate
where (dept<>'Eng' and isSenior=true) or (dept='Sales') or seniorityStartTime is null

Örnek tabloda şu sorguyu çalıştırın:

select name where salary > 700

Aşağıdaki yanıtı döndürür:

ad
Cem
Mehmet

Gruplandırma ölçütü

group by koşulu, değerleri satırlar genelinde toplamak için kullanılır. Gruplama yan tümcesindeki her bir farklı değer kombinasyonu için tek bir satır oluşturulur. Veriler, bir order by ifadesi tarafından aksi belirtilmedikçe, gruplama sütunlarına göre otomatik olarak sıralanır.

Not: group by koşulu kullanıyorsanız select yan tümcesinde listelenen her sütunun group by yan tümcesinde listelenmesi veya bir toplama işleviyle sarmalanması gerekir.

Örnekler:

select dept, max(salary) group by dept

Örnek tabloda şu sorguyu çalıştırın:

select lunchTime, avg(salary), count(age) group by isSenior,lunchTime

Aşağıdaki yanıtı döndürür:

öğle saati ort. maaş reşit olma yaşı
12:00:00 425 2
13:00:00 600 1
12:00:00 700 2
13:00:00 800 1

Özet

pivot koşulu, sütunlardaki farklı değerleri yeni sütunlara dönüştürmek için kullanılır. Örneğin, "yıl" sütununa göre pivot tablo oluşturmak, orijinal tabloda görünen her farklı yıl için sütun içeren bir tablo oluşturur. Bu özellik, örneğin bir çizgi grafik görselleştirme her sütunu ayrı bir çizgi olarak çiziyorsa yararlı olabilir. Her yıl için ayrı bir satır çizmek istiyorsanız ve orijinal tablodaki sütunlardan biri "yıl" ise gerekli veri dönüşümünü gerçekleştirmek için bir pivot işlem kullanmanız önerilir.

Not: pivot ifadesi kullanıyorsanız select yan tümcesinde listelenen her sütunun group by yan tümcesinde listelenmesi veya bir toplama işleviyle sarmalanması gerekir

Pivot sütunlar için birden fazla satır aynı değerleri içerebileceğinden pivot tablo toplama işlemini ifade eder. pivot özelliğini group by kullanmadan kullanırken sonuç tablosunun tam olarak bir satır içereceğini unutmayın. Örneğin, aşağıdaki örneği örnek tabloda çalıştırmak:

select sum(salary) pivot dept

Aşağıdaki yanıtı döndürür:

Mühendislik maaşı Pazarlama toplam maaşı Satış toplam maaşı
2100 800 750

Bunun nedeni, 2100 ABD mühendisliği için maaşların, Pazarlama departmanı için 800 vb. olmasıdır.

Her hücrenin alakalı satır ve ilgili sütun için toplama işlemini içeren bir tablo oluşturduğundan pivot parametresini group by ile birlikte kullanmak daha yararlı olabilir. Örneğin, aşağıdaki örneği örnek tabloda çalıştırmak:

select dept, sum(salary)
  group by dept
  pivot lunchTime

Aşağıdaki yanıtı döndürür:

ayrıntılı 12:00:00 toplam maaş 13:00:00 toplam maaş
Eng 1.500 600
Marketing boş 800
Satış 750 boş

Ayrıca, pivot sütunları ile group by sütunları arasında geçiş yaparak sütunları ve satırları değiştirerek bu tabloyu "dönüştürebilirsiniz". Aşağıdaki örneği örnek tabloda çalıştırmak:

select lunchTime, sum(salary)
  group by lunchTime
  pivot dept

Aşağıdaki yanıtı döndürür:

öğle saati Mühendislik maaşı Pazarlama toplam maaşı Satış toplam maaşı
12:00:00 1.500 boş 750
13:00:00 600 800 boş

pivot yan tümcesinde birden fazla sütun da kullanabilirsiniz. Böyle bir durumda, yanıt tablosunun sütunları, orijinal tabloda bulunan sütunlardaki tüm benzersiz değer kombinasyonlarından oluşur. Örneğin, aşağıdaki örneği örnek tabloda çalıştırmak:

select sum(salary)
  pivot dept, lunchTime

Aşağıdaki yanıtı döndürür:

İngilizce,12:00:00 maaş İngilizce,13:00:00 maaş Pazarlama,13:00:00 Toplam maaş Satış,12:00:00 toplam maaş
1.500 600 800 750

Yanıt tablosunda yalnızca orijinal tabloda görünen kombinasyonlara sütun verildiğini unutmayın. Bu nedenle Pazarlama,12:00:00 veya Satış,13:00:00 için bir sütun yoktur.

Birden fazla toplama da yapmak mümkündür. Örneğin, aşağıdaki örneği örnek tabloda çalıştırmak:

select sum(salary), max(lunchTime)
  pivot dept

Aşağıdaki yanıtı döndürür:

Mühendislik maaşı Pazarlama toplam maaşı Satış toplam maaşı İngilizce maksimum öğle yemeği zamanı Pazarlama maksimum öğle saati Satış maksimum öğle saati
2100 800 750 13:00:00 13:00:00 12:00:00

select yan tümcesinde birden fazla toplama, group by yan tümcesinde birden fazla sütun ve pivot yan tümcesinde birden fazla sütun birleştirebilirsiniz. Dahili olarak toplama, gruptaki sütunların ve pivot yan tümcelerin birleştirilmesiyle gerçekleştirilir.

pivot yan tümcesinde belirtilen sütunlar select, group by veya order by yan tümcelerinde görünmeyebilir. pivot kullanıldığında order by yan tümcesi hiçbir toplama sütunu içeremez. Bunun nedeni, select yan tümcesinde belirtilen her toplama için sonuç tablosunda birçok sütunun oluşturulmasıdır. Ancak, pivot kullanıldığında toplama sütunlarını biçimlendirebilirsiniz. Bu tür bir biçimin sonucu olarak, pivot işlemle oluşturulan belirli bir toplamayla ilgili tüm yeni sütunlar belirtilen kalıpa göre biçimlendirilir. Yukarıdaki örnekte format sum(salary) "some_format_string" eklendiğinde şu sütunlar etkilenir: İngilizce toplam maaş, Pazarlama toplam maaşı ve Satış toplamı maaşı.

Toplama sütunlarını etiketleyebilirsiniz. label yan tümcesinde bir etiket belirtilmezse özetleme sonucunda oluşturulan bir sütun, pivot sütunlardaki değer listesinden, toplama türünden (min., maks., toplam, ...) ve birleştirilmiş sütunun etiketinden oluşur. Örneğin, "Mühendislik, 12:00:00 Toplam Maaş". select yan tümcesinde yalnızca bir toplama belirtilmişse toplama bölümü etiketten kaldırılır ve yalnızca pivot sütunlardaki değer listesi saklanır. Örneğin "Mühendislik,12:00:00". label koşulu, bir toplama sütunu için bir etiket belirtiyorsa hem select yan tümcesinde yalnızca bir toplama olduğunda hem de birden fazla var olduğunda istenen etiket değer listesine eklenir. Örneğin, label sum(salary) "sumsal", "Mühendislik, 12:00:00 toplam", "Mühendislik, 13:00:00 toplam" vb. sütun etiketleriyle sonuçlanır.

Sıralama ölçütü

order by koşulu, satırları belirtilen sütunlardaki değerlere göre sıralamak için kullanılır.

order by koşulundaki öğeler sütun tanımlayıcıları veya toplama işlevleri, skaler işlevler veya operatörlerin sonucu olabilir.

Örnekler:

order by dept, salary desc
select dept, max(salary) group by dept order by max(salary)

Sınır

limit yan tümcesi, döndürülen satır sayısını sınırlandırmak için kullanılır.

Örnek:

limit 100

Ofset

offset yan tümcesi, belirli sayıda ilk satırı atlamak için kullanılır. limit ibaresi kullanılırsa önce offset uygulanır: Örneğin, limit 15 offset 30 31 ile 45 arasındaki satırları döndürür.

Örnekler:

offset 10
limit 30 offset 210

Etiket

label koşulu, bir veya daha fazla sütunun etiketini ayarlamak için kullanılır. Sorguda kimlik yerine etiket değeri kullanamayacağınızı unutmayın.

label koşulundaki öğeler sütun tanımlayıcıları veya toplama işlevleri, skaler işlevler veya operatörlerin sonucu olabilir.

Söz dizimi:

label column_id label_string [,column_id label_string]
column_id
Etiketin atandığı sütunun tanımlayıcısı.
label_string
İlgili sütuna atanacak etiket. Birçok görselleştirmede son kullanıcıya gösterilecek metin olarak sütun etiketi kullanılır (ör. pasta grafikte açıklama etiketi). Etiketler, dize değişmez değerleridir ve bu söz dizimi kurallarını uygular.

Örnek:

Aşağıdaki örnekte dept sütununun etiketi "Bölüm", ad sütununun etiketi "Çalışan Adı" ve konum sütununun etiketi "Çalışan Konumu" olarak ayarlanmıştır:

label dept 'Department', name "Employee Name", location 'Employee Location'

Biçim

format koşulu, bir veya daha fazla sütundaki hücreler için biçimlendirilmiş bir değer belirtmek amacıyla kullanılır. Döndürülen veriler, biçimlendirilmiş bir sütundaki her bir hücre için hem gerçek bir değer hem de biçimlendirilmiş bir değer içermelidir. Birçok görselleştirmede hesaplamalar için biçimlendirilmemiş değer kullanılır, ancak görüntülü reklamlar için biçimlendirilmiş değer kullanılır. Bu cümlede belirttiğiniz kalıplar genellikle ilgili sütunların desen özelliğinde döndürülür.

Kalıp Söz Dizimi:

number, date, timeofday, datetime
ICU tarafından tanımlanan tarih ve sayı kalıpları.
boolean
Desen, "value-if-true:value-if-false" biçiminde string şeklindedir.

Örnek:

format salary '#,##0.00', hireDate 'dd-MMM-yyyy', isSenior 'Yes!:Not yet'

 

Seçenekler

options koşulu, sorgu yürütmeyle ilgili ek seçenekleri kontrol etmek için kullanılır. options yan tümcesini uygulayabilecek olası anahtar kelimeler şunlardır:

  • no_format Biçimlendirilmiş değerleri sonuçtan kaldırır ve yalnızca temel değerleri bırakır. Belirli görselleştirmeler, yanıtın boyutunu küçültmek için biçimlendirilmiş değerleri kullanmadığında kullanılabilir.
  • no_values Temeldeki değerleri sonuçtan kaldırır ve yalnızca biçimlendirilmiş değerleri bırakır. Belirli görselleştirmeler, yanıtın boyutunu azaltmak için yalnızca biçimlendirilmiş değerleri kullandığında kullanılabilir.

Veri Manipülasyon İşlevleri

Tek bir sütunda verileri değiştirmenize veya birleştirmenize ya da verileri sütunlar arasında karşılaştırmanıza veya birleştirmenize olanak tanıyan çeşitli operatör ve işlevler vardır. Toplam değerler (sütundaki tüm değerleri eklemek için), maksimum (sütundaki en büyük değeri bulmak için) ve + (iki sütunun değerlerini aynı satıra eklemek için) olabilir.

Bazı işlevler herhangi bir yan tümcede, bazıları da maddelerin bir alt kümesinde görünebilir. Bu belge aşağıda açıklanmıştır.

Örnek:

Bu tablo göz önüne alındığında... Bu sorguyu uygularsak... Bu sonucu alıyoruz.
Ad Maaş Vergi Başlangıç Tarihi
Moda 1.000 100 1.1.2009
Hayati 2.000 200 21.1.2008
Moran 3.000 300 12.2.2008
select upper(name), year(startDate)
Ad yıl(Başlangıç Tarihi)
AKTİF 2008
MOR 2008
PAYLAŞ 2009

 

Aşağıdaki veri manipülasyon işlevleri Google Görselleştirme API'sı sorgu dilinde tanımlanır:

 

Toplama İşlevleri

Toplama işlevleri tek bir sütun tanımlayıcısına sahiptir ve her gruptaki tüm değerlerde bir işlem gerçekleştirir (gruplar, group by veya pivot yan tümceleriyle veya bu yan tümceler kullanılmıyorsa tüm satırlarla belirtilir).

Örnekler:

select max(salary)               // Returns a table with one column and one row.
select max(salary) group by dept // Returns a table with the max salary for each dept column value.
select max(salary) pivot dept    // Returns a one-row table with a column for each dept,
                                 //   and the max salary for that department.

Toplama işlevleri select, order by, label ve format yan tümcelerinde kullanılabilir. Bu ifadeler where, group by, pivot, limit, offset veya options yan tümcelerinde görünmez.

Desteklenen toplama işlevleri şunlardır:

Ad Açıklama Desteklenen Sütun Türleri Dönüş Türü
avg() Bir grubun sütunundaki tüm değerlerin ortalama değerini döndürür. number number
count() Bir grup için belirtilen sütunda bulunan öğelerin sayısını döndürür. Boş hücreler sayılmaz. Tüm türler number
max() Bir grup için sütundaki maksimum değeri döndürür. Tarihler daha küçükken, string tarihleri alfabetik olarak ve büyük/küçük harfe duyarlılık açısından karşılaştırılır. Tüm türler Sütunla aynı türde
min() Bir grubun sütunundaki minimum değeri döndürür. Tarihler daha küçükken, string'ler alfabetik olarak ve büyük/küçük harfe duyarlılık ile karşılaştırılır Tüm türler Sütunla aynı türde
sum() Bir grubun sütunundaki tüm değerlerin toplamını döndürür. number number

Not: Toplama işlevleri yalnızca bir sütun tanımlayıcısını bağımsız değişken olarak alabilir:

max(startDate)                      // OK
min(firstScore) + min(secondScore)  // OK
max(year(startDate))                // INVALID. max requires column ID
sum(salary + perks)                 // INVALID. sum requires column ID.

Skalar İşlevler

Skaler işlevler başka bir değer üretmek için sıfır veya daha fazla parametre üzerinde çalışır. Skaler işlevler, uygun türdeki parametreye karşılık gelen herhangi bir ifade iletilebilir. Bu türlerin, bu dokümanın Edebiyat bölümünde tanımlanan ve benzer ada sahip JavaScript nesnelerinden biraz farklı olabilecek türler olduğunu unutmayın.

Sütun adının, skalar işlevle sarmalanarak değiştirileceğini unutmayın.

Skalar işlevleri, tek bir değere karşılık gelen her şeyi parametre olarak alabilir:

year(max(startDate))
datediff(now(), todate(1234567890000))

Skaler işlevler şu ifadelerden herhangi birinde kullanılabilir: select, where, group by, pivot, order by, label, ve format.

Ad
year()

Bir tarih veya tarih/saat değerindeki yıl değerini döndürür. Örneğin: year(date "2009-02-05"), 2009'u döndürür.

Parametreler: date veya datetime türünde bir parametre
İade Türü: number
month()

Bir tarih veya tarih/saat değerindeki sıfıra dayalı ay değerini döndürür. Örneğin: month(date "2009-02-05"), 1 değerini döndürür. Not: Aylar 0 tabanlı olduğundan işlev Ocak için 0, Şubat için 1 vb. döndürür.

Parametreler: date veya datetime türünde bir parametre
İade Türü: number
day()

date veya date tarihindeki ayın gününü döndürür. Örneğin, day(date "2009-02-05") 5 değerini döndürür.

Parametreler: date veya datetime türünde bir parametre
İade Türü: number
hour()

Bir tarih/saat değeri veya timeofday değerinden saat değerini döndürür. Örneğin: hour(timeofday "12:03:17"), 12 değerini döndürür.

Parametreler: datetime veya timeofday türünde bir parametre
İade Türü: number
minute()

datetime veya timeofday değerindeki dakika değerini döndürür. Örneğin, minute(timeofday "12:03:17") 3 değerini döndürür.

Parametreler: datetime veya timeofday türünde bir parametre
İade Türü: number
second()

datetime veya timeofday değerindeki ikinci değeri döndürür. Örneğin: second(timeofday "12:03:17"), 17 değerini döndürür.

Parametreler: datetime veya timeofday türünde bir parametre
İade Türü: number
millisecond()

datetime veya timeofday değerinin milisaniye kısmını döndürür. Örneğin: millisecond(timeofday "12:03:17.123"), 123 değerini döndürür.

Parametreler: datetime veya timeofday türünde bir parametre
İade Türü: number
quarter()

date veya datetime değerindeki çeyreği döndürür. Örneğin: quarter(date "2009-02-05"), 1 değerini döndürür. Üç aylık dönemlerin 1 tabanlı olduğuna göre işlevin ilk çeyrek için 1, ikinci çeyrek için 2 vb. döndürdüğünü unutmayın.

Parametreler: date veya datetime türünde bir parametre
İade Türü: number
dayOfWeek()

date veya datetime değerinden haftanın gününü döndürür. Örneğin, dayOfWeek(date "2009-02-26") 5 değerini döndürür. Günlerin 1 tabanlı olduğunu ve işlevin Pazar için 1, Pazartesi için 2 vb. döndürdüğünü unutmayın.

Parametreler: date veya datetime türünde bir parametre
İade Türü: number
now()

GMT saat dilimindeki geçerli datetime değerini gösteren bir tarih ve saat değeri döndürür.

Parametreler: Yok
İade Türü: datetime
dateDiff()

İki date veya datetime değeri arasındaki gün farkını döndürür. Not: Hesaplamada değerlerin yalnızca date bölümleri kullanılır ve dolayısıyla işlev her zaman bir tam sayı değeri döndürür. Örneğin: dateDiff(date "2008-03-13", date "2008-02-12") 29 değerini, dateDiff(date "2009-02-13", date "2009-03-13") -29 değerini döndürür. Karşılaştırmadan önce zaman değerleri kısaltılır.

Parametreler: date veya datetime türünde iki parametre (her biri olabilir)
İade Türü: number
toDate()

Belirtilen değeri date değerine dönüştürür.

  • date söz konusu olduğunda aynı değeri döndürür.
  • datetime söz konusu olduğunda date kısmını döndürür. Örneğin: toDate(dateTime "2009-01-01 12:00:00") "2009-01-01" değerini döndürür.
  • number N değeri, Epoch'tan sonra date N milisaniye döndürür. Epoch,1 Ocak 1970, 00:00:00 GMT olarak tanımlanır. Örneğin: toDate(1234567890000), "2009-02-13" değerini döndürür.
Parametreler: date, datetime veya number türünde bir parametre
İade Türü: date
upper()

Belirtilen string değerini büyük harflerle döndürür. Örneğin: upper("foo"), "FOO" değerini döndürür.

Parametreler: string türünde bir parametre
İade Türü: string
lower()

Belirtilen string değerini küçük harfle döndürür. Örneğin: lower("Bar"), "bar" değerini döndürür.

Parametreler: string türünde bir parametre
İade Türü: string

Aritmetik Operatörleri

Tek bir sayıyı (yani uygun toplu işlevlerin, operatörlerin veya sabitlerin çıkışı) değerlendiren herhangi bir şey üzerinde matematik işlemleri yapmak için aritmetik operatörlerini kullanabilirsiniz.

Örnekler:

select empSalary - empTax
select 2 * (max(empSalary) / max(empTax))

Aşağıdaki operatörler tanımlanır:

Ad Açıklama Parametreler Dönüş Türü
+ İki number değerinin toplamını döndürür. İki number number
- İki number değeri arasındaki farkı döndürür. İki number number
* İki number ürününün çarpımını döndürür. İki number number
/ İki number bölümünün bölümünü döndürür. Sıfıra bölme işlemi null döndürür. İki number number

Dil Öğeleri

Edebiyat

Değişmez değerler, karşılaştırmalar veya ödevler için kullanılan değerlerdir. Değişmez değerler string, sayılar, boole değerleri veya çeşitli tarih/saat türleri olabilir. Aşağıda, sorgu söz diziminde kullanılan değişmez değerlere bazı örnekler verilmiştir:

where startDate < date "2008-03-18"  // date "2008-03-18" is a date literal
limit 30                             // 30 is a numeric literal
format salary '#,##0.00', isSenior 'not yet:of course!'  // '#,##0.00' and 'not yet:of course!' are both string literals

Her bir değişmez tür için biçimler şunlardır:

string
string değişmez değeri, tek veya çift tırnak içine alınmalıdır. Örnekler: "fourteen" 'hello world' "It's raining".
number
Sayısal değişmez değerler ondalık gösterimle belirtilir. Örnekler: 3  3.0  3.14  -71  -7.2  .6
boolean
Boole değişmez değerleri true veya false şeklindedir.
date
date anahtar kelimesini ve ardından yyyy-MM-dd biçiminde string değişmez değerini kullanın. Örnek: date "2008-03-18".
timeofday
timeofday anahtar kelimesini ve ardından HH:mm:ss[.SSS] string sabit değerini kullanın Örnek: timeofday "12:30:45"
datetime
datetime anahtar kelimesi veya timestamp anahtar kelimesinin ardından yyyy-MM-dd HH:mm:ss[.sss] biçiminde string değişmez değeri kullanılan bir tarih ve saat. Örnek: datetime '2008-03-18 12:30:34.123'

Tanımlayıcılar

Tanımlayıcılar (veya kimlikler), sütunları tanımlayan string metinleridir.

Önemli: Tanımlayıcınız

  • Boşluklar var,
  • Rezerve edilen bir kelime,
  • Alfa-sayısal karakterler veya alt çizgiler dışında herhangi bir şey içerir ([a-zA-Z0-9_]) veya
  • Bir rakamla başlar

tırnak işaretleri içine alınmalıdır (tek tırnaklarla değil).

Aksi takdirde tanımlayıcınızın tırnak içine alınması gerekmez. (Söz diziminin tanımladığı tüm anahtar kelimeler ayrılmış kelimeler değildir. Bu nedenle, örneğin "maks." değerini, çift tırnak içine almak zorunda kalmadan bir tanımlayıcı olarak kullanabilirsiniz.)

Örnekler: col1   employee_table   `start date`   `7 days traffic`   `select`

Geri tırnak işaretlerini kullanmayı unutmak veya "geri tırnak" yerine yanlışlıkla "tek tırnak" kullanmak kolay olabileceğinden, geri tırnak işareti gerektiren bir tanımlayıcı seçmenizi öneririz. Bunlar yaygın hatalardır ve genellikle hata ayıklaması zordur.

Büyük/küçük harfe duyarlılık

Tanımlayıcılar ve dize değişmez değerleri büyük/küçük harfe duyarlıdır. Diğer tüm dil öğeleri büyük/küçük harfe duyarlı değildir.

Ayrılmış Kelimeler

Aşağıdaki ayırt edici kelimeler, tanımlayıcı olarak kullanılırsa geri tırnak içine alınmalıdır:

and
asc
by
date
datetime
desc
false
format
group
label
limit
not
offset
options
or
order
pivot
select
timeofday
timestamp
true
where