CodeGym /Kursy /SQL SELF /Przykłady formatowania danych w prawdziwych zadaniach

Przykłady formatowania danych w prawdziwych zadaniach

SQL SELF
Poziom 5 , Lekcja 4
Dostępny

Jeden z najpopularniejszych scenariuszy pracy z bazami danych to przygotowanie danych do raportowania. Wyobraź sobie sytuację: pracujesz na uniwersytecie, a twój szef (który oczywiście nie ogarnia SQL-a) prosi cię o stworzenie listy studentów z połączonym imieniem i nazwiskiem oraz podaniem daty urodzenia w formacie DD-MM-YYYY. Zadanie jest jasne: trzeba ładnie ogarnąć dane. I tutaj SQL jest naszym ziomkiem.

Przykład 1: Łączenie imienia i nazwiska

Zacznijmy od połączenia imienia (first_name) i nazwiska (last_name) studentów z naszej tabeli students.

SELECT
    CONCAT(first_name, ' ', last_name) AS full_name
FROM 
    students;

Co tu się dzieje?

  • CONCAT() łączy stringi. Dodajemy spację między imieniem a nazwiskiem, żeby było czytelniej.
  • Wynik ląduje w nowej kolumnie full_name.

Wynik może wyglądać tak:

full_name
Otto Art
Anna Song
Pol Mac

Przykład 2: Formatowanie daty

Teraz dorzucimy do naszego zapytania formatowanie daty urodzenia.

SELECT
    CONCAT(first_name, ' ', last_name) AS full_name,
    TO_CHAR(birth_date, 'DD-MM-YYYY') AS formatted_birth_date
FROM 
    students;

Co nowego?

  • Używamy funkcji TO_CHAR() na polu birth_date.
  • Format 'DD-MM-YYYY' zamienia datę na wygodny widok (np.: 25-12-2001).

Wynik:

full_name formatted_birth_date
Otto Art 12-04-1995
Anna Song 03-08-1996
Pol Mac 21-11-1997

Voilà! Właśnie stworzyłeś ładny raport.

Formatowanie do eksportu danych

Załóżmy, że jeden z twoich ziomków chce wyeksportować dane o zamówieniach do pliku CSV, żeby potem ogarniać je w Excelu. Ale dane w bazie są w niewygodnym dla niego formacie, a ludzie ze sprzedaży chcą konkretny wygląd. Na przykład, zamiast pola total_price, gdzie jest cena zamówienia, chcą widzieć ją w formacie: $100.00.

Przykład 3: Konwersja liczb do formatu walutowego

Ogarnijmy dane o zamówieniach z tabeli orders do eksportu:

SELECT
    order_id,
    TO_CHAR(total_price, 'FM$999,999.00') AS formatted_price
FROM 
    orders;

Co robi TO_CHAR() w tym przypadku?

  • FM (Fill Mode) wywala niepotrzebne spacje.
  • $ dodaje symbol waluty.
  • 999,999.00 ustawia format z separatorami tysięcy i dwoma miejscami po przecinku.

Wynik:

order_id formatted_price
1 $1,000.00
2 $2,500.50
3 $10.00

Teraz twój kolega może łatwo wrzucić dane do Excela i pochwalić cię na spotkaniu.

Finałowe zadanie

I tu zaczyna się najciekawsze. Połączmy wszystkie skillsy, które już masz.

Zadanie

Stwórz zapytanie do tabeli students, które:

  1. Łączy imię i nazwisko w jedną kolumnę full_name.
  2. Konwertuje datę urodzenia do formatu DD-MM-YYYY.
  3. Pokazuje wiek studenta na dziś.

Zapytanie będzie wyglądać mniej więcej tak:

SELECT
    CONCAT(first_name, ' ', last_name) AS full_name,
    TO_CHAR(birth_date, 'DD-MM-YYYY') AS formatted_birth_date,
    DATE_PART('year', AGE(birth_date)) AS age
FROM 
    students;

Nowe elementy:

  • AGE(birth_date) zwraca różnicę między dzisiejszą datą a datą urodzenia, ale w formacie lat, miesięcy i dni.
  • DATE_PART('year', AGE(birth_date)) wyciąga z tego tylko liczbę lat.

Wynik:

full_name formatted_birth_date age
Otto Art 12-04-1995 28
Anna Song 03-08-1996 27
Pol Mac 21-11-1997 25

Taki raport zadowoli nawet najbardziej upierdliwych kolegów.

Formatowanie pod konkretne warunki

Czasem formatowanie danych jest potrzebne do warunków lub filtrowania. Na przykład, wyciągnijmy studentów, którzy mają urodziny w tym miesiącu.

Przykład 4: Filtrowanie po miesiącu

SELECT
    CONCAT(first_name, ' ', last_name) AS full_name,
    TO_CHAR(birth_date, 'DD-MM-YYYY') AS formatted_birth_date
FROM 
    students
WHERE 
    DATE_PART('month', birth_date) = DATE_PART('month', CURRENT_DATE);

Jak to działa?

  • DATE_PART('month', birth_date) wyciąga miesiąc z daty urodzenia.
  • CURRENT_DATE daje dzisiejszą datę. Bierzemy z niej miesiąc przez DATE_PART().

Łączenie formatowania i sortowania

Teraz połączmy wszystko, co już wiemy, i dorzućmy sortowanie. Na przykład, zróbmy listę studentów posortowanych po dacie urodzenia.

Przykład 5: Sortowanie po dacie urodzenia

SELECT
    CONCAT(first_name, ' ', last_name) AS full_name,
    TO_CHAR(birth_date, 'DD-MM-YYYY') AS formatted_birth_date
FROM 
    students
ORDER BY 
    birth_date ASC;

Sortowanie rosnąco ASC pokaże najpierw najstarszych studentów, a malejąco DESC — najmłodszych.

Łączenie z unikalnymi wartościami

Na koniec — zadanie z gwiazdką. Wyobraź sobie, że nasz uniwersytet ma oddziały w kilku miastach i musisz zrobić listę unikalnych miast, gdzie studiują studenci, ale w kolejności alfabetycznej.

Przykład 6: Unikalne wartości i sortowanie

SELECT DISTINCT
    city 
FROM 
    students
ORDER BY 
    city ASC;

Co robi DISTINCT?

Wywala powtarzające się wartości, żeby w wynikach każde miasto było tylko raz.

Po co to wszystko?

Wygoda i wygląd. Jak dane są ładnie ogarnięte, łatwiej się z nimi pracuje, a szefowie mniej marudzą.

Gotowość na życie. Będziesz mógł automatycznie generować raporty, ogarniać eksporty i robić fajne prezentacje.

Podnosisz swoją wartość. SQL to nie tylko dane. To sztuka robienia z nich czegoś czytelnego i przydatnego.

Używaj tych skillsów, żeby nie tylko pisać zapytania, ale tworzyć arcydzieła! Na kolejnych wykładach będziemy dalej odkrywać magię PostgreSQL.

1
Ankieta/quiz
Formatowanie stringów, poziom 5, lekcja 4
Niedostępny
Formatowanie stringów
Formatowanie stringów
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION