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

Google Görselleştirme API'sı Sorgu Dili, veri kaynağına sorgu göndererek çeşitli veri manipülasyonları yapmanıza olanak tanır.

İçindekiler

Giriş

Genellikle görselleştirmeler verilerin belirli bir biçimde olmasını bekler. Örneğin, bir pasta grafikte veriler, metin etiketi ve sayısal değer olmak üzere iki sütun halinde 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ırayla eşleşmeyebilir.

Sorgu dili, veri manipülasyonu ve biçimlendirme isteklerini veri kaynağına gönderme olanağı sağlar ve döndürülen veri yapısı ile içeriklerin beklenen yapıyla eşleştiğinden emin olur.

Sorgu dilinin söz dizimi SQL'e benzer. SQL konusunda bilgi sahibi olan geliştiriciler, bu sorgu dilini hızlıca öğrenip kullanabilir. Web'de birçok SQL eğiticisi bulabilirsiniz. Bu sorgu dili ile SQL arasında, syntax bölümünde açıklanan bazı farklılıklar vardır.

Veri kaynaklarının sorgu dilini uygulamak veya dilin tüm özelliklerini uygulamak için gerekli olmadığını unutmayın. Aksine inanmak için bir nedeniniz yoksa bu dilin tüm özelliklerini uygulamak için bir veri kaynağına güvenmemelisiniz.

Sorgu Dilini Kullanma

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

Sorguyu JavaScript'ten Ayarlama

Sorgu dizesini JavaScript kodundan 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 Sorguyu 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 sorguyu özelleştirmeye devam etmenize olanak tanır.

Sorgu dizesi, URL parametresi olarak doğru şekilde kodlanmalıdır. JavaScript encodeURIComponent işlevini kullanarak bir URL'yi 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, etiketlerdir. Sorgu dizenizde etiketi değil, kimliği kullanmanız gerekir.)

select A, sum(B) group by A

Bu sorgu kodlandığında şu şekilde olur:

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

Bu URL'nin 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 ifadesini 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 ayrıntı 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 olacak şekilde tasarlanmıştır. Ancak bu SQL'in bir alt kümesidir ve kendine ait bazı özellikleri öğrenmeniz gerekir. SQL hakkında bilginiz varsa öğrenmesi çok zor olmayacaktır.

Veri Tabloları

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

  • Tanımlayıcı (veya sütun kimliği). Sorgu içindeki sütunlara referans vermek için kullanılır. Bir sorguda hiçbir zaman etikete göre sütuna, yalnızca tanımlayıcıya göre referansta bulunmaya çalışmanız gerektiğini unutmayın. İpucu: Boşluk içeren kimlikler kullanmamaya çalışın. Boşlukları yönetmek zordur ve kodlamanızda küçük ama bulunması zor hatalar yapmanıza neden olabilir. Boşluk içeren bir kimliğin de arka tırnak işareti içine alınması gerekir.
  • Etiket. Genellikle son kullanıcılara gösterilen bir string. Örneğin, pasta grafikte gösterge veya tablodaki sütun başlığı olarak.
  • 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 Kelimeler bölümünde açıklanan JavaScript türlerine benzer ancak aynı değildir.
  • Biçimlendirme deseni. Veri kaynağı, sütunlarının bazıları veya tümü için biçimlendirme kalıpları tanımlayabilir. Bir biçim koşulu ekleyerek bu kalıbı geçersiz kılabilirsiniz.

Tüm örneklerde kullanılan tablo:

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

ad
string
departman
string
lunchTime
timeofday
maaş
number
hireDate
date
yaş
number
isSenior
boolean
seniorityStartTime
datetime
JehanEng12:00:00
1.000
2005-03-1935true02.12.2007 15:56:00
DenizEng12:00:00
500
2006-04-1927falsenull
SelinEng13:00:00
600
2005-10-1030falsenull
BenSatış12:00:00
400
2002-10-1032true09.03.2005 12:30:00
DeryaSatış12:00:00
350
2004-09-0825falsenull
MikeMarketing13:00:00
800
2005-01-1024true30.12.2007 14:40:00

Dil Maddeleri

Sorgu dilinin söz dizimi, aşağıdaki ifadelerden oluşur. Her ifade bir veya iki anahtar kelimeyle başlar. Tüm ifadeler 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 Döndürülecek sütunları ve bunların sıralamasını 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 Verilen biçimlendirme kalıplarını kullanarak belirli sütunlardaki değerleri biçimlendirir.
options Ek seçenekleri ayarlar.
from from ifadesi dilden kaldırıldı.

 

Seç

select ifadesi, döndürülecek sütunları ve sıralarını belirtmek için kullanılır. Bu ifade belirtilmezse veya select * kullanılıyorsa veri kaynağı tablosunun tüm sütunları orijinal sıralarında döndürülür. Sütunlara tanımlayıcılar tarafından referans verilir (etiketlerle değil). Örneğin, bir Google E-tablosunda sütun tanımlayıcılar bir veya iki karakterli sütun harfidir (A, B, C, ...).

select yan tümcesindeki öğeler, sütun tanımlayıcıları veya toplama işlevlerinin, skaler işlevlerin ya da operatörlerin çıktısı olabilir.

Örnekler:

select *
select dept, salary
select max(salary)

Aşağıdaki örnekte, boşluk (e-posta adresi) içeren veya ayrılmış kelimeler (tarih) içeren sütun kimliklerini referans göstermek için arka tırnak işaretleri kullanılmaktadır:

select `email address`, name, `date`

Örnek tabloda aşağıdaki sorguyu çalıştırma:

select lunchTime, name

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

lunchTime ad
12:00:00Jehan
12:00:00Deniz
13:00:00Selin
12:00:00Ben
12:00:00Derya
13:00:00Mike

Konum

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

Basit karşılaştırma operatörleri şunlardır: <=, <, >, >=, =, !=, <>. Her iki karşılaştırma operatörü de != <> eşit değildir anlamına gelir. Dizeler, sözlük değeriyle karşılaştırılır. Eşitliğin çoğu bilgisayar dilinde olduğu gibi == ile değil, = ile belirtildiğini unutmayın. null ile karşılaştırma işlemi 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.

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

  • contains - Alt dize eşleşmesi. Parti tüm içinde herhangi bir yerdeyse bütün contains parça doğrudur. Örnek: where name contains 'John'; "Can", "Can Adam", "Uzun Cem Gümüş" ile eşleşir ancak "can adam" ile eşleşmez.
  • starts with - Ön ek eşleşmesi. önek, değer'in başındaysa değer starts with ön eki doğrudur. Örnekler: where dept starts with 'engineering', "mühendislik" ve "mühendislik yöneticileri" ile eşleşir. where dept starts with 'e' "Engine", "eng" ve "e" ile eşleşir.
  • ends with - Bir son ek eşleşmesi. değer ends with sonek, sonek değer'in sonundaysa doğrudur. Örnek: where role ends with 'y'; "kovboy", "oğlan" ve "y" ile eşleşir.
  • matches - A (preg) normal ifade eşleşmesi. haystack matches needle, needle içindeki normal ifade haystack ile eşleşirse doğrudur. Örnekler: where country matches '.*ia' Hindistan ve Nijerya ile eşleşir ancak Indiana ile eşleşmez. Bunun genel bir arama olmadığını, bu nedenle where country matches 'an' öğesinin "Kanada" ile eşleşmeyeceğini unutmayın.
  • like - İki joker karakteri destekleyen bir metin araması: herhangi bir türde sıfır veya daha fazla karakterle eşleşen % ve herhangi bir karakterle eşleşen _ (alt çizgi). Bu, SQL BENZER 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 aşağıdaki sorguyu çalıştırma:

select name where salary > 700

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

ad
Jehan
Mike

Gruplandırma Ölçütü

group by ifadesi, satırlar arasındaki değerleri toplamak için kullanılır. Gruplandırma ölçütündeki her farklı değer kombinasyonu için tek bir satır oluşturulur. order by ifadesinde aksi belirtilmedikçe veriler otomatik olarak gruplandırma sütunlarına göre sıralanır.

Not: group by ifadesini kullanırsanız select yan tümcesinde listelenen her sütunun group by ifadesinde listelenmesi veya bir toplama işlevi tarafından sarmalanması gerekir.

Örnekler:

select dept, max(salary) group by dept

Örnek tabloda aşağıdaki sorguyu çalıştırma:

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

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

lunchTime ort. maaş sayma yaşı
12:00:00 425 2
13:00:00 600 1
12:00:00 700 2
13:00:00 800 1

Pivot

pivot ifadesi, sütunlardaki farklı değerleri yeni sütunlara dönüştürmek için kullanılır. Örneğin, "yıl" sütununu özetleyerek, orijinal tabloda görünen her ayrı yıl için sütun içeren bir tablo oluşturabilirsiniz. Örneğin, bir çizgi grafik görselleştirmesi her sütunu ayrı bir çizgi olarak çiziyorsa bu yöntem faydalı olabilir. Her yıl için ayrı bir çizgi çizmek istiyorsanız ve "year", orijinal tablodaki sütunlardan biriyse gerekli veri dönüşümünü yapmak için bir pivot işlemi kullanmak iyi bir seçenektir.

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

Birden fazla satır pivot sütunlar için aynı değerleri içerebileceği için özet, toplama anlamına gelir. pivot, group by olmadan kullanıldığında sonuç tablosunun tam olarak bir satır içereceğini unutmayın. Örneğin, örnek tabloda aşağıdaki sorguyu çalıştırarak:

select sum(salary) pivot dept

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

Eng toplam-maaş Pazarlama toplam maaş Satış toplam maaş
2100 800 750

Bunun nedeni 2100'ün, Mühendislik departmanı için 800, Pazarlama departmanı için 800 vb. maaşların toplamı olmasıdır.

pivot ile group by birlikte kullanılması daha da faydalı olabilir. Çünkü her hücrenin ilgili satır ve ilgili sütun için toplama işleminin sonucunu içeren bir tablo oluşturulur. Örneğin, örnek tabloda aşağıdaki sorguyu çalıştırdığınızda:

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

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

departman 12:00:00 toplam maaş 13:00:00 toplam maaş
Eng 1.500 600
Marketing null 800
Satış 750 null

Ayrıca, pivot sütunları ile group by sütunları arasında geçiş yaparak sütunlar ile satırlar arasında geçiş yaparak bu tabloyu "ters çevirebilirsiniz". Örnek tabloda aşağıdaki sorguyu çalıştırma:

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

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

lunchTime Eng toplam-maaş Pazarlama toplam maaş Satış toplam maaş
12:00:00 1.500 null 750
13:00:00 600 800 null

Ayrıca pivot ifadesinde birden fazla sütun 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, örnek tabloda aşağıdaki sorguyu çalıştırarak:

select sum(salary)
  pivot dept, lunchTime

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

Mühendis,12:00:00 toplam-maaş Mühendis,13:00:00 toplam-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 kombinasyonların sütun içerdiğini unutmayın. Bu nedenle Pazarlama 12:00:00 veya Satış için sütun yoktur.

Birden fazla toplama da kullanabilirsiniz. Örneğin, örnek tabloda aşağıdaki sorguyu çalıştırarak:

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

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

Eng toplam-maaş Pazarlama toplam maaş Satış toplam maaş Eng max-lunchTime Pazarlama max-lunchTime Satış max-lunchTime
2100 800 750 13:00:00 13:00:00 12:00:00

select ifadesinde birden çok toplama, group by ifadesinde birden fazla sütun ve pivot ifadesinde birden fazla sütunu birleştirebilirsiniz. Dahili olarak toplama işlemi, gruplandırma ölçütü ve pivot ifadelerindeki sütunların 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 ifadesi herhangi bir toplama sütunu içeremez. Bunun nedeni, select yan tümcesinde belirtilen her toplama için sonuç tablosunda birçok sütun oluşturulmasıdır. Ancak pivot kullanıldığında toplama sütunlarını biçimlendirebilirsiniz. Böyle bir biçimin sonucunda, pivot işlemi tarafından oluşturulan belirli toplamayla alakalı tüm yeni sütunlar belirtilen kalıba göre biçimlendirilir. Yukarıdaki örnekte format sum(salary) "some_format_string" eklenmesi şu sütunları etkiler: Eng toplam maaş, Pazarlama toplam maaşı ve Satış toplam maaşı.

Toplama sütunlarını etiketleyebilirsiniz. label yan tümcesinde herhangi bir etiket belirtilmezse özetleme sonucunda üretilen bir sütunun etiketi, pivot sütunlardaki değer listesinden, toplama türünden (min., maks., toplam, ...) ve birleştirilmiş sütunun etiketinden oluşur. Örneğin, "Eng,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 pivot sütunlarda yalnızca değer listesi tutulur. Örneğin, "Eng,12:00:00". label ifadesi bir toplama sütunu için bir etiket belirttiğinde istenen etiket, hem select ifadesinde yalnızca bir toplama olduğunda hem de birden fazla toplama olduğunda değer listesine eklenir. Örneğin label sum(salary) "sumsal", "Eng,12:00:00 özet", "Eng,13:00:00 özet" vb. sütun etiketleriyle sonuçlanır.

Sıralama Ölçütü

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

order by yan tümcesindeki öğeler, sütun tanımlayıcıları veya toplama işlevlerinin, skaler işlevlerin ya da operatörlerin çıktısı olabilir.

Örnekler:

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

Sınır

limit ifadesi, döndürülen satır sayısını sınırlamak için kullanılır.

Örnek:

limit 100

Belirli uzaklıkta kopyasını oluştur

offset ifadesi, belirli sayıda ilk satırı atlamak için kullanılır. limit ifadesi 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 ifadesi, 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 yan tümcesindeki öğeler, sütun tanımlayıcıları veya toplama işlevlerinin, skaler işlevlerin ya da operatörlerin çıktısı 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
Söz konusu sütuna atanacak etiket. Birçok görselleştirme, son kullanıcıya gösterilecek metin olarak sütun etiketini kullanır (ör. pasta grafikte gösterge etiketi). Etiketler, dize değişmez değerleridir ve bu söz dizimi kurallarına uyar.

Ö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 ayarlanmaktadır:

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

Biçim

format ifadesi, bir veya daha fazla sütundaki hücrelere biçimlendirilmiş değer belirtmek için 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, gösterim için biçimlendirilmiş değer kullanılır. Bu yan tümcede belirttiğiniz kalıplar genellikle karşılık gelen sütunların pattern ö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
Kalıp, "doğruysa-değer:yanlışsa-değeri" biçiminde bir string şeklindedir.

Örnek:

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

 

Seçenekler

options ifadesi, sorgu yürütmeyle ilgili ek seçenekleri kontrol etmek için kullanılır. options deyimine uygun olabilecek anahtar kelimeler şunlardır:

  • no_format Biçimlendirilmiş değerleri sonuçtan kaldırır ve yalnızca temel değerleri bırakır. İlgili görselleştirme, yanıtın boyutunu küçültmek için biçimlendirilmiş değerleri kullanmadığında kullanılabilir.
  • no_values Sonuçtan temel değerleri kaldırır ve yalnızca biçimlendirilmiş değerleri bırakır. Belirli görselleştirmede, yanıtın boyutunu küçültmek için yalnızca biçimlendirilmiş değerler kullanıldığında kullanılabilir.

Veri Manipülasyon İşlevleri

Tek bir sütundaki verileri işlemenize veya birleştirmenize ya da sütunlardaki verileri karşılaştırmanıza veya birleştirmenize olanak tanıyan çeşitli operatör ve işlev türleri vardır. Örnekler, sum() (bir sütundaki tüm değerleri eklemek için), maks (bir sütundaki en büyük değeri bulmak için) ve + (aynı satırdaki iki sütunun değerlerini toplamak için).

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

Örnek:

Bu tablo göz önünde bulundurulduğunda... Bu sorguyu uygularsak... Şu sonucu alırız.
Ad Maaş Vergi StartDate
Moda 1.000 100 1.1.2009
Kıvılcım 2.000 200 21.1.2008
Moran Dili 3.000 300 12.2.2008
select upper(name), year(startDate)
Ad yıl(Başlangıç Tarihi)
AVİTAL 2008
MORAN 2008
SHARON 2009

 

Aşağıdaki veri manipülasyon işlevleri, Google Görselleştirme API'si sorgu dili tarafından tanımlanmıştır:

 

Toplama İşlevleri

Toplama işlevlerine tek sütunlu bir tanımlayıcı iletilir ve her gruptaki tüm değerlerde (gruplar group by veya pivot ifadeleriyle veya bu ifadeler kullanılmıyorsa tüm satırlar ile belirtilir) bir işlem gerçekleştirir.

Ö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, format yan tümcelerinde kullanılabilir. where, group by, pivot, limit, offset veya options ifadelerinde görünemez .

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ütundaki öğe sayısını döndürür. Boş hücreler sayılmaz. Tüm türler number
max() Bir gruba ait sütunda maksimum değeri döndürür. Tarihler, daha önceki tarihlerin daha küçük olmasıyla karşılaştırılır. string değerleri, büyük/küçük harfe duyarlılık açısından alfabetik olarak 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 önceki tarihlerin daha küçük olmasıyla karşılaştırılır, string değerleri büyük/küçük harfe duyarlılık açısından alfabetik olarak karşılaştırılır Tüm türler Sütunla aynı türde
sum() Bir gruba ait sütundaki tüm değerlerin toplamını döndürür. number number

Not: Toplama işlevleri, bağımsız değişken olarak yalnızca sütun tanımlayıcısı 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.

Scaler İşlevler

Skaler işlevler, başka bir değer üretmek için sıfır veya daha fazla parametre üzerinden çalışır. Skaler işlevler, uygun türdeki parametreyi değerlendiren herhangi bir ifade geçirilebilir. Bu türlerin, bu belgenin Basit değerler bölümünde tanımlanan türler olduğuna dikkat edin. Bunlar, benzer şekilde adlandırılmış JavaScript nesnelerinden biraz farklı olabilir.

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

Skaler işlevler, tek bir değeri elde eden her şeyi parametre olarak alabilir:

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

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

Ad
year()

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

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

Bir tarih veya tarih/saat değerinden sıfır tabanlı 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ıdır. Bu nedenle 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 tarih/saat değerinden 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()

Tarih/saat 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ğerinden 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ğerinden 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 bölümü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ğerinden üç aylık bir dönemi döndürür. Örneğin: quarter(date "2009-02-05"), 1 değerini döndürür. Çeyrekler 1 tabanlıdır. Bu nedenle, işlev ilk çeyrek için 1, ikinci için 2 vb. döndürür.

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, bu nedenle 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 diliminde geçerli datetime öğesini temsil eden tarih ve saat değerini 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 bu nedenle işlev her zaman tam sayı değeri döndürür. Örneğin: dateDiff(date "2008-03-13", date "2008-02-12") 29 değerini döndürür; dateDiff(date "2009-02-13", date "2009-03-13"), -29 değerini döndürür. Zaman değerleri, karşılaştırmadan önce kısaltılır.

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

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

  • date verildiğinde aynı değeri döndürür.
  • datetime verildiğinde date bölümü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 verildiğinde, Epoch'tan sonra date N milisaniye döndürür. Dönem 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örler

Tek bir sayıya (yani uygun toplama fonksiyonlarının, operatörlerin veya sabitlerin çıktısı) sonuç veren her şey üzerinde matematik işlemleri yapmak için aritmetik operatörleri kullanabilirsiniz.

Örnekler:

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

Aşağıdaki operatörler tanımlanmıştı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'nin çarpımını döndürür. İki number number
/ İki number işleminin bölümünü döndürür. Sıfıra bölme işlemi boş sonucunu döndürür. İki number number

Dil Öğeleri

Harf değerleri

Değişmez değerler, karşılaştırmalar veya atamalar 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. Sorgu söz diziminde kullanılan değişmez değer örneklerinden bazıları şunlardır:

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 değer türünün biçimleri aşağıda verilmiştir:

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 düz değerler ondalık gösterimle belirtilir. Örnekler: 3  3.0  3.14  -71  -7.2  .6
boolean
Boole düz değerleri true veya false şeklindedir.
date
date anahtar kelimesini ve ardından yyyy-MM-dd biçiminde bir string değişmez değeri kullanın. Örnek: date "2008-03-18".
timeofday
timeofday anahtar kelimesini ve ardından HH:mm:ss[.SSS] biçiminde bir string değişmez değeri kullanın Örnek: timeofday "12:30:45".
datetime
datetime anahtar kelimesi veya timestamp anahtar kelimesi, ardından yyyy-MM-dd HH:mm:ss[.sss] biçiminde string değişmez değeri kullanılarak 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 metin string'larıdır.

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

  • Boşluk içeriyor,
  • Ayrılmış bir kelimedir,
  • Alfanümerik karakter veya alt çizgi dışında herhangi bir şey içeren ([a-zA-Z0-9_]) veya
  • Bir rakamla başlar

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

Aksi takdirde tanımlayıcınızın tırnak içine alınmasına gerek yoktur. (Söz dizimi tarafından tanımlanan tüm anahtar kelimelerin ayrılmış kelimeler olmadığını unutmayın. Bu nedenle, örneğin, başına bir tırnak işareti koymak zorunda kalmadan tanımlayıcı olarak "max" kullanabilirsiniz.)

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

Geri tırnak işaretlerinin kullanılmasını gerektiren veya yanlışlıkla "geri tırnak işaretleri" yerine yanlışlıkla "tek tırnak" kullanılabileceği için geri tırnak gerektiren bir tanımlayıcı seçmeniz önerilmez. Bunlar yaygın hatalardır ve genellikle hatalarının giderilmesi 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 dil öğelerinin hiçbiri büyük/küçük harfe duyarlı değildir.

Ayrılmış Kelimeler

Aşağıdaki ayrılmış kelimeler, tanımlayıcı olarak kullanılıyorsa tekrar 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