# Informatyka — zadanie 3.1

> Źródło: matura.lol — https://matura.lol/question/maturazai-informatyka-inf-2017-05/zad/3.1
> Wersja Markdown strony zadania (dla asystentów AI). Przy cytowaniu podaj matura.lol i link powyżej.

- arkusz: Informatyka · Matura · maj 2017 (rozszerzona)
- rok: 2017
- poziom: rozszerzona
- typ: closed
- punkty: 1
- działy: Bazy danych, dane i bazy

## Treść

Zadanie 3. Test

Oceń prawdziwość podanych zdań. Zaznacz P, jeśli zdanie jest prawdziwe, albo F - jeśli jest fałszywe. W każdym zadaniu punkt uzyskasz tylko za komplet poprawnych odpowiedzi.

Po wykonaniu podanego zapytania SQL do pewnej bazy danych wyniki będą zawsze uporządkowane niemalejąco według pola nazwa.

Oceń prawdziwość zdań dotyczących sortowania wyników zapytań SQL.

SELECT nazwa, wartosc FROM dane ORDER BY wartosc, nazwa
SELECT nazwa, wartosc FROM dane ORDER BY nazwa
SELECT nazwa, sum(wartosc) FROM dane GROUP BY nazwa
SELECT nazwa, sum(wartosc) FROM dane GROUP BY nazwa ORDER BY nazwa

## Rozwiązanie — maturazai.pl (AI)

## Poprawna odpowiedź

| # | Zapytanie | Sortowanie po `nazwa` | Ocena |
| 1 | `ORDER BY wartosc, nazwa` | NIE - głównie po wartosc | **F** |
| 2 | `ORDER BY nazwa` | TAK - bezpośrednio | **P** |
| 3 | `GROUP BY nazwa` (bez ORDER BY) | NIE GWARANTOWANE | **F** |
| 4 | `GROUP BY nazwa ORDER BY nazwa` | TAK | **P** |

**Wynik: F, P, F, P**

## Sposób 1 - analiza klauzuli ORDER BY

**Zapytanie 1:** `ORDER BY wartosc, nazwa`
- Sortowanie najpierw po `wartosc`, dopiero przy remisach - po `nazwa`.
- Wyniki NIE są uporządkowane niemalejąco po samej `nazwa` (np. wartości {(B, 1), (A, 2)} dadzą porządek (B, 1), (A, 2), gdzie B < A jest fałszem).
- **F**

**Zapytanie 2:** `ORDER BY nazwa`
- ORDER BY bez kierunku domyślnie sortuje rosnąco (ASC).
- Wyniki uporządkowane niemalejąco po `nazwa` ✓.
- **P**

**Zapytanie 3:** `GROUP BY nazwa` (bez ORDER BY)
- W standardzie SQL klauzula GROUP BY **nie gwarantuje** porządku wyników - to detal implementacyjny silnika bazy danych.
- Bez `ORDER BY` kolejność może być dowolna (zwykle dla wydajności).
- **F**

**Zapytanie 4:** `GROUP BY nazwa ORDER BY nazwa`
- GROUP BY grupuje, a ORDER BY na końcu wymusza sortowanie po nazwa.
- Wyniki uporządkowane niemalejąco po `nazwa` ✓.
- **P**

## Sposób 2 - przykład danych pokazujący różnicę

Dane:
| nazwa | wartosc |
| Zofia | 1 |
| Anna | 2 |
| Beata | 1 |

**Zapytanie 1 (ORDER BY wartosc, nazwa):**
Beata | 1
Zofia | 1
Anna | 2
Po nazwa: Beata, Zofia, Anna - NIE jest niemalejąco (Zofia > Anna).

**Zapytanie 2 (ORDER BY nazwa):**
Anna | 2
Beata | 1
Zofia | 1
Niemalejąco po nazwa ✓.

**Zapytanie 3 (GROUP BY nazwa, bez ORDER BY):**
Porządek niezdefiniowany. Może być Beata, Anna, Zofia lub jakkolwiek inaczej.

**Zapytanie 4 (GROUP BY nazwa ORDER BY nazwa):**
Anna | 2
Beata | 1
Zofia | 1
Niemalejąco ✓.

## Reference algorytmiczny - semantyka SQL

> Reference - porządek wyników w SQL:
> - **Bez ORDER BY** silnik SQL może zwrócić wiersze w DOWOLNEJ kolejności (zwykle nieprzewidywalnej, zależnej od planu wykonania, indeksów, partycjonowania).
> - **ORDER BY kolumna** sortuje rosnąco po danej kolumnie (domyślnie ASC).
> - **ORDER BY a, b** sortuje najpierw po a; przy remisach po b.
> - **GROUP BY** grupuje wiersze, ale NIE narzuca kolejności wyjścia (mimo że w niektórych RDBMS, np. starszym MySQL, była niejawna kolejność po polach grupujących - w nowych wersjach już nie).

## Schemat oceniania CKE

> Klucz CKE (zadanie 3.1, max 1 pkt):
> - **1 pkt** - za KOMPLET poprawnych odpowiedzi: F, P, F, P
> - **0 pkt** - za odpowiedź niepełną/błędną lub brak

## Typowe pułapki

- **Zapytanie 3 (P zamiast F)** - najczęstszy błąd. Uczeń myśli „GROUP BY grupuje po nazwa, więc wyniki są po nazwa". To MIT - bez ORDER BY porządek nie jest gwarantowany.
- **Zapytanie 1 (P zamiast F)** - myślenie „ORDER BY zawiera nazwa, więc OK". Ale nazwa jest DRUGIM kryterium - pierwszy jest wartosc, więc po nazwa wyniki niekoniecznie są uporządkowane.
- **Niemalejąco vs rosnąco** - „niemalejąco" oznacza „rosnąco lub równo" (≤), czyli to samo co default ASC.

## Złożoność obliczeniowa

- Sortowanie wyników SQL po klauzuli ORDER BY: zwykle O(n log n).
- GROUP BY: O(n log n) z indeksem na kolumnie lub O(n) z hash-aggregate.

## Linki

- [dane JSON](https://matura.lol/api/question/maturazai-informatyka-inf-2017-05/zad/3.1)
- [otwórz w wyszukiwarce](https://matura.lol/?problem=maturazai-informatyka-inf-2017-05%2Fzad%2F3.1)

## Podobne zadania

- [Zadanie 8.4](https://matura.lol/question/informatyka-2024-maj-matura-rozszerzona/zad/8.4) — Zadanie 8.4. (0-2) Baza danych rejestru wykroczeń została zmodyfikowana. Dodano nową tabelę Fotoradar, wraz z polami IdFotoradaru, Miejscowosc i DozwolonaPredko
- [Zadanie 7.5](https://matura.lol/question/informatyka-2023-maj-matura-rozszerzona/zad/7.5) — Zadanie 7.5. (0-2) Do wcześniej opisanych tabel bazy danych dołączamy kolejną o nazwie sklep, w której zapisano cennik gier sprzedawanych w pewnym sklepie. Tabe
- [Zadanie 3](https://matura.lol/question/informatyka-2026-maj-matura-stara-rozszerzona/zad/3) — Zadanie 3. (0-1) Oceń prawdziwość podanych zdań. Zaznacz P, jeśli zdanie jest prawdziwe, albo F - jeśli jest fałszywe. Punkt uzyskasz tylko za komplet poprawnyc
- [Zadanie 3.3](https://matura.lol/question/informatyka-2025-czerwiec-matura-stara-rozszerzona/zad/3.3) — Zadanie 3.3. (0-1) W bazie danych istnieją dwie tabele: kontrahenci (id_kontrahenta, nazwa) oraz faktury (nr_faktury, id_kontrahenta, kwota, data). Między tabel

_Ostatnia aktualizacja danych: 2026-10-03_
