PostgreSQL CASE

Podsumowanie: w tym samouczku dowiesz się, jak używać wyrażenia warunkowego PostgreSQL CASE do tworzenia zapytań warunkowych.

wyrażenie PostgreSQL CASE jest takie samo jak wyrażenie IF/ELSE w innych językach programowania. Pozwala na dodanie logiki if-else do zapytania, aby utworzyć potężne zapytanie.

ponieważ CASE jest wyrażeniem, możesz go używać w dowolnych miejscach, w których można użyć wyrażenia, np.,SELECT, WHERE, GROUP BY, i HAVING klauzula.

wyrażenie CASE ma dwie formy: ogólną i prostą.

1) Ogólne wyrażenie przypadku PostgreSQL

Poniżej przedstawiono ogólną formę oświadczenia CASE :

Code language: SQL (Structured Query Language) (sql)

w tej składni każdy warunek (condition_1, condition_2…) jest wyrażeniem logicznym, które zwraca true lub false.

gdy warunek Zwraca wartość false, wyrażenie CASE zwraca następny warunek od góry do dołu, aż znajdzie warunek, który zwraca wartość true.

jeśli warunek jest równy true, wyrażenie CASE zwraca odpowiadający mu wynik. Na przykład, jeśli condition_2 Zwraca wartość true, wyrażenie CASE Zwraca wartość result_2. Ponadto natychmiast przestaje Oceniać następne wyrażenie.

w przypadku gdy wszystkie warunki obliczają wartość false, wyrażenie CASE zwraca wynik (else_result) następujący po słowie kluczowym ELSE. Jeśli pominiesz klauzulę ELSE, wyrażenie CASEzwróci NULL.

przyjrzyjmy się tabeli film z przykładowej bazy danych.

a) ogólny przykład przypadku

Załóżmy, że chcesz oznaczyć filmy według ich długości w oparciu o następującą logikę:

  • jeśli długość filmu jest mniejsza niż 50 minut, film jest krótki.
  • jeśli długość filmu jest większa niż 50 minut i mniejsza lub równa 120 minut, film jest średni.
  • jeśli długość jest większa niż 120 minut, film jest długi.

aby zastosować tę logikę, możesz użyć wyrażenia CASE w instrukcji SELECT w następujący sposób:

Code language: PHP (php)

wyjście:

zauważ, że umieściliśmy alias kolumny duration po wyrażeniu CASE.

B) użycie przykładu CASE Z funkcją agregacji

Załóżmy, że chcesz przypisać segmenty cen do filmów z następującą logiką:

  • jeśli cena wynajmu wynosi 0,99, film jest ekonomiczny.
  • jeśli cena wynajmu wynosi 1,99, film jest masowy.
  • jeśli cena wynajmu wynosi 4,99, film jest premium.

i chcesz wiedzieć, ile filmów należy do ekonomii, masy i premium.

w tym przypadku możesz użyć wyrażenia CASE do skonstruowania zapytania w następujący sposób:

Code language: SQL (Structured Query Language) (sql)

wynik zapytania jest następujący:

w tym przykładzie użyliśmy wyrażenia CASE, aby zwrócić 1 lub 0, jeśli stawka wynajmu przypada na każdy segment cenowy. Zastosowaliśmy funkcję SUM, aby obliczyć sumę filmów dla każdego segmentu cenowego.

2) proste wyrażenie przypadku PostgreSQL

PostgreSQL dostarcza inną formę wyrażenia CASE o nazwie prosta forma w następujący sposób:

Code language: SQL (Structured Query Language) (sql)

CASE najpierw ocenia expression i porównuje wynik z każdą wartością( value_1, value_2, …) w klauzulach WHEN kolejno, aż znajdzie dopasowanie.

gdy wynik expression jest równy wartości (value1, value2, itd.) w klauzuli WHEN, CASE zwraca odpowiedni wynik w klauzuli THEN.

jeśli CASE nie znajdzie żadnych dopasowań, Zwraca wartość else_result, która następuje po wartości ELSE lub NULL, jeśli wartość ELSE nie jest dostępna.

a) proste wyrażenie przypadku PostgreSQL przykład

poniższe polecenie używa wyrażenia CASE, aby dodać opis oceny do wyjścia:

Code language: PHP (php)

w tym przykładzie użyliśmy prostego wyrażenia CASE, aby porównać ocenę z tabeli film z niektórymi literalnymi wartościami, takimi jak G, PG, NC17, PG-13 i zwrócić odpowiedni opis oceny.

B) użycie prostego wyrażenia przypadku PostgreSQL z przykładem funkcji agregującej

poniższe polecenie wykorzystuje wyrażenie CASE z funkcją SUM do obliczenia liczby filmów w każdej ocenie:

Code language: PHP (php)

w tym samouczku nauczyłeś się używać wyrażenia PostgreSQL CASE do tworzenia złożonych zapytań.

  • czy ten samouczek był pomocny ?
  • YesNo

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.