Dokumentacja języka zapytań (wersja 0.7)

Język zapytań Google wizualizacji interfejsu API umożliwia wykonywanie różnych operacji na danych w ramach zapytania do źródła danych.

Spis treści

Wprowadzenie

Zazwyczaj wizualizacje oczekują danych w określonej formie. Na przykład na wykresie kołowym dane mogą przedstawiać 2 kolumny: etykietę tekstową i wartość liczbową. Dane w źródle danych mogą nie być dokładnie zgodne z tą strukturą. Na przykład źródło danych może mieć więcej niż 2 kolumny lub kolejność kolumn może nie odpowiadać kolejności oczekiwanej przez wykres kołowy.

Język zapytań umożliwia wysyłanie do źródła danych żądań manipulacji danymi i ich formatowanie oraz zapewnia, że zwrócona struktura i zawartość danych są zgodne z oczekiwaną strukturą.

Składnia języka zapytania jest podobna do składni SQL. Deweloperzy, którzy znają się na języku SQL, powinni być w stanie szybko się nauczyć i korzystać z tego języka zapytań. W internecie dostępnych jest wiele samouczków SQL. Istnieją pewne różnice między tym językiem zapytań a językiem SQL, które są opisane w sekcji składnia.

Źródła danych nie są wymagane do implementacji języka zapytań, a jeśli tak, do wdrażania wszystkich funkcji w języku. Jeśli nie masz innych przekonań, nie korzystaj z źródeł danych, aby wdrożyć wszystkie funkcje w tym języku.

Używanie języka zapytań

Ciąg zapytania możesz dołączyć do żądania źródła danych na 2 sposoby: ustawiając go w kodzie JavaScript lub jako parametr w adresie URL źródła danych. Jeśli żądanie nie zawiera ciągu zapytania, domyślnym źródłem danych jest zwracanie wszystkich wierszy i kolumn za pomocą domyślnej kolejności i formatowania kolumn. Aby to zmienić, umieść ciąg zapytania w źródle danych.

Ustawianie zapytania z JavaScriptu

Aby ustawić ciąg zapytania z poziomu kodu JavaScript, wywołaj metodę setQuery klasy google.visualization.Query.

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

Ustawianie zapytania w adresie URL źródła danych

Ciąg zapytania można dodać do adresu URL źródła danych za pomocą parametru tq. Ustawienie zapytania w parametrze adresu URL zamiast w języku JavaScript pozwoli Ci łatwo korzystać z wizualizacji napisanych przez innych deweloperów, a także nadal dostosowywać to zapytanie.

Ciąg zapytania musi być prawidłowo zakodowany jako parametr adresu URL. Możesz zakodować adres URL za pomocą funkcji JavaScript encodeURIComponent lub zakodować go ręcznie przy użyciu narzędzia do kodowania dostępnego na końcu tej sekcji.

Przykład:

Rozważ użycie tego ciągu zapytania dotyczącego arkusza kalkulacyjnego Google. Pamiętaj, że identyfikatory kolumn w arkuszach kalkulacyjnych to zawsze litery, a tekst nagłówka kolumn w opublikowanym arkuszu to etykiety, a nie identyfikatory. w ciągu zapytania musisz użyć identyfikatora, a nie etykiety).

select A, sum(B) group by A

Po zakodowaniu to zapytanie staje się:

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

Załóżmy, że to adres URL Twojego arkusza kalkulacyjnego:

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

Dodaj /gviz/tq?tq=YOUR_QUERY_STRING do adresu URL arkusza kalkulacyjnego, aby otrzymać końcowy ciąg zapytania:

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

Aby zakodować lub zdekodować ciąg zapytania, użyj poniższego narzędzia:

Uwaga: uzyskiwanie dostępu do danych w prywatnym arkuszu kalkulacyjnym wymaga podania danych logowania za pomocą protokołu OAuth. Więcej informacji znajdziesz w sekcji Arkusze kalkulacyjne Google: autoryzacja.

Składnia języka

Omówienie

Składnia języka zapytań w interfejsie API Google do wizualizacji jest podobna do składni SQL. Jest to jednak podzbiór SQL z kilkoma jego funkcjami, których musisz się nauczyć. Znajomość SQL nie powinna być zbyt trudna.

Tabele danych

Ten dokument używa terminu tabela danych do odwoływania się do zestawu wyników zapytania. Tabela danych składa się z wierszy i kolumn. Każda kolumna w tabeli danych ma te właściwości:

  • Identyfikator (lub identyfikator kolumny). Służy do odwoływania się do kolumn w ramach zapytania. Pamiętaj, aby nigdy nie odwoływać się do kolumny według etykiety w zapytaniu, tylko według identyfikatora. Wskazówka: nie używaj żadnych identyfikatorów ze spacjami – spacje są trudne do zarządzania i mogą powodować powstawanie niewielkich, ale trudnych do znalezienia błędów w kodzie. Dodatkowo identyfikator zawierający spacje musi być w cudzysłowie prostym.
  • Etykieta. string, który jest zwykle wyświetlany użytkownikom. Na przykład jako legenda na wykresie kołowym lub nagłówek kolumny w tabeli.
  • Typ danych. Obsługiwane typy danych to string, number, boolean, date, datetime i timeofday. Wszystkie wartości w kolumnie będą miały typ danych zgodny z typem kolumny lub wartość null. Te typy są podobne (ale nie identyczne) do typów JavaScriptu. Opisaliśmy je w sekcji Literie na tej stronie.
  • Wzorzec formatowania. Źródło danych może definiować wzorce formatowania w niektórych lub wszystkich kolumnach. Możesz zastąpić ten wzorzec, dodając klauzulę formatu.

Tabela używana we wszystkich przykładach:

W tej sekcji wszystkie przykłady zapytań odnoszą się do poniższej tabeli. Nagłówki kolumn to identyfikatory kolumn.

imię i nazwisko
string
dział
string
obiad
timeofday
wynagrodzenie
number
Data zatrudnienia
date
wiek
number
jest starszy
boolean
seniorityStartTime
datetime
JanEng12:00:00
1000
2005-03-1935prawda02.12.2007 15:56:00
DawidEng12:00:00
500
2006-04-1927fałszbrak
SandraEng13:00:00
600
2005-10-1030fałszbrak
BartekSprzedaż12:00:00
400
2002-10-1032prawda2005-03-09 12:30:00
AniaSprzedaż12:00:00
350
2004-09-0825 TYS.fałszbrak
MichałMarketing13:00:00
800
2005-01-1024prawda30.12.2007 14:40:00

Klauzule językowe

Składnia języka zapytania składa się z następujących klauzul. Każda klauzula zaczyna się od jednego lub dwóch słów kluczowych. Wszystkie klauzule są opcjonalne. Klauzule są oddzielone spacjami. Klauzule muszą mieć format:

Klauzula Wykorzystanie
select Wybiera kolumny, które zostaną zwrócone i w jakiej kolejności. W przypadku pominięcia wszystkie kolumny kolumny zostaną zwrócone w domyślnej kolejności.
where Zwraca tylko wiersze pasujące do warunku. Jeśli go nie pominiesz, zostaną zwrócone wszystkie wiersze.
group by Łączy wartości w wierszach.
pivot Przekształca odrębne wartości w kolumnach w nowe kolumny.
order by Sortuje wiersze według wartości w kolumnach.
limit Ogranicza liczbę zwróconych wierszy.
offset Pomija określoną liczbę pierwszych wierszy.
label Ustawia etykiety kolumn.
format Formatuje wartości w określonych kolumnach przy użyciu określonych wzorców formatowania.
options Ustawia dodatkowe opcje.
from Klauzula from została usunięta z języka.

 

Wybierz

Klauzula select służy do określenia kolumn, które zostaną zwrócone, oraz ich kolejności. Jeśli ta klauzula nie jest określona lub jeśli pole select * jest używane, zwracane są wszystkie kolumny tabeli źródła danych w oryginalnej kolejności. Odwołują się do kolumn identyfikatory, a nie etykiety. Na przykład w arkuszu kalkulacyjnym Google identyfikatory kolumn to litery jedno- lub dwuznakowe (A, B, C, ...).

Elementy w klauzuli select mogą być identyfikatorami kolumn lub danymi wyjściowymi funkcji agregacji, funkcji skalarnych lub operatorów.

Przykłady:

select *
select dept, salary
select max(salary)

W tym przykładzie cudzysłowy odwołują się do identyfikatorów kolumn, które zawierają spacje (adres e-mail) lub zarezerwowane słowa (data):

select `email address`, name, `date`

Uruchamianie tego zapytania w przykładowej tabeli:

select lunchTime, name

Zwraca tę odpowiedź:

obiad name
12:00:00Jan
12:00:00Dawid
13:00:00Sandra
12:00:00Bartek
12:00:00Ania
13:00:00Michał

Gdzie

Klauzula where służy do zwracania tylko wierszy spełniających określony warunek.

Proste operatory porównania to <=, <, >, >=, =, !=, <>. Oba operatory porównania != <> oznaczają nierówne wartości. Ciągi tekstowe są porównywane z wartością leksykograficzną. Pamiętaj, że w przypadku większości języków komputerowych równość jest określana jako =, a nie ==. Porównanie z null odbywa się za pomocą is null lub is not null.

Możesz połączyć wiele warunków za pomocą operatorów logicznych and, or i not. Do określania wyraźnego priorytetu można używać nawiasów.

Klauzula gdzie zawiera też bardziej złożone operatory porównania ciągów znaków. Te operatory wykorzystują 2 ciągi jako argumenty. Wszelkie argumenty niebędące ciągami (na przykład daty lub liczby) zostaną przed przekształceniem w ciągi. W przypadku dopasowania ciągu znaków wielkość liter ma znaczenie (aby obejść ten problem, możesz użyć funkcji skalarnych upper() lub lower()).

  • contains – dopasowanie podłańcucha. Cała część contains ma wartość true (prawda), jeśli część jest w dowolnym miejscu w całości. Przykład: where name contains 'John' dopasowuje „Jan”, „Jan Kowalski”, „Jan srebrny”, ale nie „jan”.
  • starts with – dopasowanie prefiksu. Wartość starts with Prefiks to prawda, jeśli prefiks znajduje się na początku wartości wartość. Przykłady: where dept starts with 'engineering' pasuje do haseł „inżynierowie” i „menedżerowie inżynierii”. where dept starts with 'e' odpowiada operatorom „inżynieria”, „eng” i „e”.
  • ends with – dopasowanie sufiksu. Wartość ends with Suffix ma wartość true (prawda), jeśli suffix jest na końcu value. Przykład: where role ends with 'y' dopasowuje „kowboj”, „chłopiec” i „y”.
  • matches – dopasowanie wyrażenia regularnego (preg). haystack matchesigła ma wartość prawda, jeśli wyrażenie regularne w elemencie needle pasuje do haystack. Przykłady: where country matches '.*ia' pasuje do Indii i Nigerii, ale nie do Indiany. Pamiętaj, że nie jest to wyszukiwanie globalne, więc hasło where country matches 'an' nie będzie pasować do słowa „Kanada”.
  • like – wyszukiwanie tekstowe obsługujące 2 symbole wieloznaczne: %, który odpowiada dowolnemu znakowi lub więcej, oraz _ (podkreślenie), który odpowiada dowolnemu znakowi. Jest on podobny do operatora SQL LIKE. Przykład: where name like fre% dopasowuje „fre”, „fred” i „freddy”.

Przykłady:

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

Uruchamianie tego zapytania w przykładowej tabeli:

select name where salary > 700

Zwraca tę odpowiedź:

name
Jan
Michał

Grupuj według

Klauzula group by służy do agregowania wartości w wierszach. Pojedynczy wiersz jest tworzony dla każdej innej kombinacji wartości w klauzuli group-by. Dane są automatycznie sortowane według kolumn grupowania, chyba że inaczej określono klauzulę order by.

Uwaga: jeśli używasz klauzuli group by, wszystkie kolumny wymienione w klauzuli select muszą być wymienione w klauzuli group by lub muszą być uwzględnione w funkcji agregacji.

Przykłady:

select dept, max(salary) group by dept

Uruchamianie tego zapytania w przykładowej tabeli:

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

Zwraca tę odpowiedź:

obiad śr. wynagrodzenie wiek
12:00:00 425 2
13:00:00 600 1
12:00:00 700 2
13:00:00 800 1

Tabela przestawna

Klauzula pivot służy do przekształcania różnych wartości w kolumnach w nowe kolumny. Na przykład przestawienie według kolumny „rok” spowoduje utworzenie tabeli z kolumną dla każdego oddzielnego roku pojawiającego się w oryginalnej tabeli. Przydaje się to np. wtedy, gdy wizualizacja wykresu liniowego zawiera każdą kolumnę jako oddzielną linię. Jeśli chcesz narysować oddzielny wiersz dla każdego roku, a „rok” jest jedną z kolumn pierwotnej tabeli, dobrym rozwiązaniem będzie użycie operacji przestawnej, która zapewni niezbędną przekształcenie danych.

Uwaga: jeśli używasz klauzuli pivot, wszystkie kolumny zawarte w klauzuli select muszą być wymienione w klauzuli group by lub muszą być uwzględnione w funkcji agregacji.

Ponieważ wiele wierszy może zawierać te same wartości w kolumnach przestawnych, oznacza to, że tabela przestawna jest agregowana. Pamiętaj, że jeśli używasz pivot bez group by, tabela wyników będzie zawierać tylko jeden wiersz. Na przykład możesz uruchomić to zapytanie w przykładowej tabeli:

select sum(salary) pivot dept

Zwraca tę odpowiedź:

Wynagrodzenie (ang.) (zarobki) Wynagrodzenie marketingowe Suma wynagrodzeń za sprzedaż
2100 800 750

Dzieje się tak, ponieważ 2100 to suma zarobków dla działu IT, 800 dla działu marketingu itp.

Użycie funkcji pivot w połączeniu z funkcją group by może być jeszcze bardziej przydatne, ponieważ tworzy tabelę, w której każda komórka zawiera wynik agregacji określonego wiersza i odpowiedniej kolumny. Na przykład w przykładowej tabeli możesz uruchomić to zapytanie:

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

Zwraca tę odpowiedź:

dział 12:00:00 13:00:00 salary
Eng 1500 600
Marketing brak 800
Sprzedaż 750 brak

Możesz też „odwrócić” tę tabelę, przełączając kolumny i wiersze, przełączając się między kolumnami pivot i group by. Uruchamianie tego zapytania w przykładowej tabeli:

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

Zwraca tę odpowiedź:

obiad Wynagrodzenie (ang.) (zarobki) Wynagrodzenie marketingowe Suma wynagrodzeń za sprzedaż
12:00:00 1500 brak 750
13:00:00 600 800 brak

W klauzuli pivot możesz też użyć więcej niż jednej kolumny. W takim przypadku kolumny tabeli odpowiedzi składają się z wszystkich unikalnych kombinacji wartości w kolumnach, które istnieją w pierwotnej tabeli. Na przykład w przykładowej tabeli możesz uruchomić to zapytanie:

select sum(salary)
  pivot dept, lunchTime

Zwraca tę odpowiedź:

Eng,12:00:00 Eng,13:00:00 Marketing,13:00:00 wynagrodzenie Sprzedaż,12:00:00
1500 600 800 750

Zwróć uwagę, że tylko kombinacje pojawiające się w oryginalnej tabeli zawierają w tabeli odpowiedzi kolumny. Dlatego nie ma kolumny na potrzeby marketingu, 12:00:00 ani sprzedaży.13:00:00.

Możesz też użyć więcej niż jednej agregacji. Na przykład w przykładowej tabeli możesz uruchomić to zapytanie:

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

Zwraca tę odpowiedź:

Wynagrodzenie (ang.) (zarobki) Wynagrodzenie marketingowe Suma wynagrodzeń za sprzedaż Maksymalny czas trwania projektu Maksymalny czas trwania marketingu Maksymalny czas trwania przerwy na sprzedaż
2100 800 750 13:00:00 13:00:00 12:00:00

Możesz połączyć wiele agregacji w klauzuli select, wielu kolumnach w klauzuli group by i wielu kolumnach w klauzuli pivot. Agregacja jest wykonywana przez połączenie kolumn w grupie według klauzul tabeli przestawnej.

Kolumny określone w klauzuli pivot nie mogą występować w klauzulach select, group by lub order by. W przypadku użycia właściwości pivot klauzula order by nie może zawierać żadnych kolumn agregacji. Dzieje się tak, ponieważ w przypadku każdej agregacji określonej w klauzuli select wiele kolumn jest generowanych w tabeli wyników. Możesz jednak sformatować kolumny agregacji, gdy używasz atrybutu pivot. W wyniku tego formatu wszystkie nowe kolumny istotne dla określonej agregacji wygenerowane przez operację przestawiania są formatowane według określonego wzorca. W powyższym przykładzie dodanie kolumny format sum(salary) "some_format_string" wpłynie na te kolumny: wynagrodzenie sumy, wynagrodzenie marketingowe i wynagrodzenie sumy sprzedaży.

Kolumny agregacji można oznaczyć etykietami. Jeśli w klauzuli label nie określono żadnej etykiety, etykieta kolumny utworzonej w wyniku tabeli przestawnej składa się z listy wartości w kolumnach przestawnych, typu agregacji (min., maks., sumy...) i etykiety kolumny zbiorczej. Na przykład „Eg.,12:00:00 sumy wynagrodzenia”. Jeśli w klauzuli select określono tylko jedną agregację, z etykiety usunięto część agregacji i zachowana zostanie tylko lista wartości z kolumn przestawnych. Na przykład „Eg.,12:00:00”. Gdy klauzula label określa etykietę w kolumnie agregacji, żądana etykieta jest dodawana do listy wartości, gdy występuje tylko 1 agregacja w klauzuli select i więcej niż 1. label sum(salary) "sumsal" spowoduje na przykład dodanie etykiet kolumn: „Eg, 12:00:00 sums”, „Eng,13:00:00 sums” itp.

Zamów wg

Klauzula order by służy do sortowania wierszy według wartości w określonych kolumnach.

Elementy w klauzuli order by mogą być identyfikatorami kolumn lub danymi wyjściowymi funkcji agregacji, funkcji skalarnych lub operatorów.

Przykłady:

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

Limit

Klauzula limit służy do ograniczenia liczby zwróconych wierszy.

Przykład:

limit 100

Odsunięcie

Klauzula offset służy do pomijania podanej liczby pierwszych wierszy. W przypadku użycia klauzuli limit najpierw stosowana jest wartość offset, np. limit 15 offset 30 zwraca wiersze od 31 do 45.

Przykłady:

offset 10
limit 30 offset 210

Etykieta

Klauzula label służy do ustawiania etykiety w co najmniej jednej kolumnie. Pamiętaj, że nie możesz użyć wartości etykiety zamiast identyfikatora w zapytaniu.

Elementy w klauzuli label mogą być identyfikatorami kolumn lub danymi wyjściowymi funkcji agregacji, funkcji skalarnych lub operatorów.

Składnia:

label column_id label_string [,column_id label_string]
column_id
Identyfikator kolumny, do której jest przypisana etykieta.
label_string
Etykieta, którą można przypisać do tej kolumny. Wiele wizualizacji wykorzystuje etykietę kolumny jako tekst do wyświetlania użytkownikowi, np. legendę na wykresie kołowym. Etykiety są literami ciągu znaków i podlegają tym regułom składni.

Przykład:

W tym przykładzie etykieta kolumny „Dział” to „Dział”, etykieta kolumny nazwy to „Nazwa pracownika”, a etykieta kolumny „Lokalizacja” to „Lokalizacja pracownika”.

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

Format

Klauzula format służy do określania sformatowanej wartości komórek w co najmniej jednej kolumnie. Zwracane dane powinny zawierać zarówno rzeczywistą, jak i sformatowaną wartość każdej komórki w sformatowanej kolumnie. Wiele wizualizacji korzysta z niesformatowanych wartości do obliczeń, ale z wartości formatowania w postaci reklam displayowych. Wzorce określone w tej klauzuli są zwykle zwracane we właściwości pattern w odpowiednich kolumnach.

Składnia wzorca:

number, date, timeofday, datetime
Wzorce daty i liczby zdefiniowane przez wzór.
boolean
Wzorzec to string w formacie „value-if-true:value-if-false”.

Przykład:

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

 

Opcje

Klauzula options służy do kontrolowania dodatkowych opcji wykonywania zapytań. Po sekcji options mogą występować następujące słowa kluczowe:

  • no_format Usuwa sformatowane wartości z wyniku i pozostawia tylko wartości bazowe. Tej opcji można używać, gdy konkretna wizualizacja nie używa sformatowanych wartości, aby zmniejszyć rozmiar odpowiedzi.
  • no_values powoduje usunięcie podstawowych wartości z wyniku i pozostawia tylko wartości sformatowane. Tego ustawienia można użyć, jeśli konkretną wizualizację używa tylko sformatowanych wartości, aby zmniejszyć rozmiar odpowiedzi.

Funkcje manipulowania danymi

Istnieje kilka rodzajów operatorów i funkcji, które pozwalają manipulować danymi w jednej kolumnie lub je porównywać lub łączyć. Może to być np. funkcja sum() (dodanie wszystkich wartości do kolumny), maksymalna (aby znaleźć największą wartość w kolumnie) lub + (dodanie wartości z 2 kolumn do tego samego wiersza).

Niektóre funkcje mogą występować w dowolnej klauzuli, a niektóre w podzbiorze klauzul. Dokumentujemy to poniżej.

Przykład:

Biorąc pod uwagę tę tabelę... Jeśli zastosujemy to zapytanie... Rezultaty są takie.
Nazwa Salary Podatek Data rozpoczęcia
Pola 1000 100 01.01.2009
Prywatne 2000 200 21.01.2008
Moran 3000 300 12.02.2008
select upper(name), year(startDate)
Nazwa rok(data rozpoczęcia)
AVITAL 2008
Kuchnia Morska 2008
SHARON 2009

 

Te funkcje manipulacji danymi są definiowane przez język zapytania Google wizualizacji interfejsu API:

 

Funkcje agregacji

Funkcje agregacji przekazują pojedynczą kolumnę identifier i wykonują działanie na wszystkich wartościach w każdej grupie (grupy są określane za pomocą klauzul group by lub pivot albo wszystkich wierszy, jeśli nie są one używane).

Przykłady:

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.

Funkcji agregacji można używać w klauzulach select, order by, label, format. Nie mogą występować w klauzulach where, group by, pivot, limit, offset ani options.

Oto obsługiwane funkcje agregacji:

Nazwa Opis Obsługiwane typy kolumn Typ zwracanej wartości
avg() Zwraca średnią wartość wszystkich wartości w kolumnie danej grupy. number number
count() Zwraca liczbę elementów w określonej kolumnie danej grupy. Komórki o wartości null nie są zliczane. Dowolny typ number
max() Zwraca maksymalną wartość w kolumnie grupy. Daty są porównywane z wcześniejszymi i mniejsze od string – z uwzględnieniem wielkości liter. Dowolny typ Ten sam typ co kolumna
min() Zwraca minimalną wartość w kolumnie grupy. Daty są porównywane z wcześniejszymi wartościami, a string są porównywane alfabetycznie, z uwzględnieniem wielkości liter Dowolny typ Ten sam typ co kolumna
sum() Zwraca sumę wszystkich wartości w kolumnie grupy. number number

Uwaga: funkcje agregacji mogą przyjmować jako identyfikator kolumny tylko argument:

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

Funkcje skalarne

Funkcje skalarne obsługują więcej niż zero parametrów, co pozwala uzyskać inną wartość. Funkcje skalarne mogą być przekazywane do każdego wyrażenia, które ocenia wartość parametru odpowiedniego typu. Pamiętaj, że są to typy zdefiniowane w sekcji Literals w tym dokumencie. Mogą one nieznacznie różnić się od obiektów JavaScript o podobnej nazwie.

Pamiętaj, że nazwa kolumny zostanie zmieniona, dodając do niej funkcję skalarną.

Funkcje skalarne mogą przyjmować jako parametry, które oceniają pojedynczą wartość:

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

Funkcje skalarne mogą być używane w dowolnym z tych klauzul: select, where, group by, pivot, order by, label, i format.

Nazwa
year()

Zwraca wartość roku z daty lub daty i godziny. Na przykład year(date "2009-02-05") zwraca 2009.

Parametry: jeden parametr typu date lub datetime
Typ zwrotu: number
month()

Zwraca wartość miesiąca opartą na wartości zero lub daty. Na przykład: month(date "2009-02-05") zwraca 1. Uwaga: miesiące mają wartość 0, więc funkcja zwraca 0 – styczeń, 1 – luty itd.

Parametry: jeden parametr typu date lub datetime
Typ zwrotu: number
day()

Zwraca dzień miesiąca z wartości date lub daty i godziny. Na przykład: day(date "2009-02-05") zwraca 5.

Parametry: jeden parametr typu date lub datetime
Typ zwrotu: number
hour()

Zwraca wartość godziny od daty lub godziny (timeofday). Na przykład hour(timeofday "12:03:17") zwraca 12.

Parametry: jeden parametr typu datetime lub timeofday
Typ zwrotu: number
minute()

Zwraca wartość minuty z wartości datetime lub timeofday. Na przykład minute(timeofday "12:03:17") zwraca 3.

Parametry: jeden parametr typu datetime lub timeofday
Typ zwrotu: number
second()

Zwraca drugą wartość z wartości datetime lub timeofday. Na przykład: second(timeofday "12:03:17") zwraca 17.

Parametry: jeden parametr typu datetime lub timeofday
Typ zwrotu: number
millisecond()

Zwraca milisekundę wartości datetime lub timeofday. Na przykład: millisecond(timeofday "12:03:17.123") zwraca 123.

Parametry: jeden parametr typu datetime lub timeofday
Typ zwrotu: number
quarter()

Zwraca kwartał z wartości date lub datetime. Na przykład: quarter(date "2009-02-05") zwraca 1. Zwróć uwagę, że kwartały mają wartość 1, więc funkcja zwraca 1 dla pierwszego kwartału, 2 dla drugiego itd.

Parametry: jeden parametr typu date lub datetime
Typ zwrotu: number
dayOfWeek()

Zwraca dzień tygodnia z wartości date lub datetime. Na przykład: dayOfWeek(date "2009-02-26") zwraca 5. Uwaga: dni są oparte na wartości 1, więc funkcja zwraca 1 w przypadku niedzieli, 2 w poniedziałek itd.

Parametry: jeden parametr typu date lub datetime
Typ zwrotu: number
now()

Zwraca wartość daty i godziny wskazującą aktualną wartość datetime w strefie czasowej GMT.

Parametry: brak
Typ zwrotu: datetime
dateDiff()

Zwraca różnicę w dniach między dwiema wartościami date lub datetime. Uwaga: w obliczeniach używane są tylko części wartości date, więc funkcja zawsze zwraca wartość całkowitą. Na przykład: dateDiff(date "2008-03-13", date "2008-02-12") zwraca 29, a dateDiff(date "2009-02-13", date "2009-03-13") zwraca -29. Przed porównaniem wartości czasu są skracane.

Parametry: dwa parametry typu date lub datetime (mogą być jednym z nich).
Typ zwrotu: number
toDate()

Przekształca podaną wartość w wartość date.

  • Zwraca wartość date, która ma tę samą wartość.
  • Zwraca wartość date, która jest zwracana przez funkcję datetime. Na przykład: toDate(dateTime "2009-01-01 12:00:00") zwraca „2009-01-01”.
  • Z uwzględnieniem number N zwraca date milisekundy po epoki. Epoka jest zdefiniowana jako 1 stycznia 1170 roku, 00:00:00 GMT. Na przykład toDate(1234567890000) zwraca „2009-02-13”.
Parametry: jeden parametr typu date, datetime lub number.
Typ zwrotu: date
upper()

Zwraca zmienną string wielkimi literami. Na przykład: upper("foo") zwraca „FOO”.

Parametry: jeden parametr typu string
Typ zwrotu: string
lower()

Zwraca podaną literę string małymi literami. Na przykład: lower("Bar") zwraca „bar”.

Parametry: jeden parametr typu string
Typ zwrotu: string

Operatory arytmetyczne

Operatory arytmetyczne umożliwiają wykonywanie operacji matematycznych na dowolnych wartościach, które otrzymują pojedynczy wynik (tj. dane wyjściowe odpowiednich funkcji zbiorczych, operatorów lub stałych).

Przykłady:

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

Zdefiniowano następujące operatory:

Nazwa Opis Parametry Typ zwracanej wartości
+ Zwraca sumę 2 wartości number. 2 number number
- Zwraca różnicę między 2 wartościami number. 2 number number
* Zwraca iloczyn dwóch argumentów number. 2 number number
/ Zwraca iloraz 2 number. Dzielenie przez zero zwraca zero. 2 number number

Elementy języka

Literie

Literały to wartości używane do porównań i przypisań. Literatury mogą obejmować string, liczby, wartości logiczne lub różne typy daty/godziny. Oto kilka przykładów literałów używanych w składni zapytań:

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

Oto formaty poszczególnych rodzajów literałów:

string
Literał string powinien być umieszczony w cudzysłowie prostym lub podwójnym. Przykłady: "fourteen" 'hello world' "It's raining".
number
Dosłowne liczby są określone w zapisie dziesiętnym. Przykłady: 3  3.0  3.14  -71  -7.2  .6
boolean
Dosłowne wartości logiczne to true lub false.
date
Użyj słowa kluczowego date, a następnie literału string w formacie yyyy-MM-dd. Przykład: date "2008-03-18".
timeofday
Użyj słowa kluczowego timeofday, a następnie literału string w formacie HH:mm:ss[.SSS] Przykład: timeofday "12:30:45".
datetime
Data i godzina za pomocą słowa kluczowego datetime lub słowa kluczowego timestamp, a następnie literału string w formacie yyyy-MM-dd HH:mm:ss[.sss]. Przykład: datetime '2008-03-18 12:30:34.123'

Identyfikatory

Identyfikatory (identyfikatory) to tekst string, który identyfikuje kolumny.

Ważne: jeśli Twój identyfikator

  • Zawiera spacje
  • to zarezerwowane słowo,
  • Zawiera wszystkie znaki lub znaki alfanumeryczne ([a-zA-Z0-9_]) lub
  • Zaczyna się cyfrą

muszą być w cudzysłowie prostym (a nie w cudzysłowie prostym).

W przeciwnym razie Twój identyfikator nie musi być cytowany. (Pamiętaj, że nie wszystkie słowa kluczowe zdefiniowane przez składnię są zarezerwowanymi słowami, dlatego możesz zastosować na przykład wartość „max” bez konieczności cudzysłowu).

Przykłady: col1   employee_table   `start date`   `7 days traffic`   `select`

Odradzamy wybieranie identyfikatora, który wymaga cudzysłowów, ponieważ łatwo jest zapomnieć o cudzysłowach lub przypadkowo użyć „cudzysłowów prostych” zamiast „cudzysłowów prostych”. Są to typowe błędy i często trudno je debugować.

Wielkość liter

W identyfikatorach i literach ciągu znaków wielkość liter ma znaczenie. W pozostałych elementach językowych nie jest rozróżniana wielkość liter.

Zarezerwowane słowa

Jeśli używasz tego identyfikatora jako identyfikatora, musisz używać cudzysłowu prostego:

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