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 CASE
zwró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