# Informatyka — zadanie 6.2

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

- arkusz: Informatyka · Matura · maj 2015 (rozszerzona)
- rok: 2015
- poziom: rozszerzona
- typ: open
- punkty: 2
- działy: Bazy danych

## Treść

Kontekst - patrz zadanie 6.1.

W których z miejsc podanych w plikach rozegrano najmniejszą liczbę wyścigów Grand Prix w latach 2000-2012?

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

## Poprawna odpowiedź

**Indie** - miejsce z najmniejszą liczbą wyścigów Grand Prix w latach 2000-2012.

## Sposób 1 - SQL (GROUP BY + ORDER BY ASC LIMIT 1)

```sql
SELECT GrandPrix, COUNT(*) AS liczba_wyscigow
FROM Wyscigi
GROUP BY GrandPrix
ORDER BY liczba_wyscigow ASC, GrandPrix
LIMIT 1;

**Wynik:**
GrandPrix: Indie
liczba_wyscigow: 2 (2011, 2012)

Lub bez LIMIT (gdyby był remis):
```sql
SELECT GrandPrix, COUNT(*) AS liczba
FROM Wyscigi
GROUP BY GrandPrix
HAVING COUNT(*) = (SELECT MIN(licz) FROM (SELECT COUNT(*) AS licz FROM Wyscigi GROUP BY GrandPrix));

## Sposób 2 - Python

```python
import pandas as pd
from collections import Counter

wyscigi = pd.read_csv('Wyscigi.txt', sep=';', header=None,
names=['Id_w', 'Rok', 'GrandPrix'])

licznik = wyscigi['GrandPrix'].value_counts()
najmniej = licznik.min()
miejsca = licznik[licznik == najmniej].index.tolist()

print('Najmniejsza liczba wyścigów:', najmniej)
print('Miejsca:', miejsca) # ['Indie']

## Sposób 3 - arkusz kalkulacyjny

**Krok 1:** Wczytaj Wyscigi.txt jako tabelę z kolumnami: Id_w, Rok, GrandPrix.

**Krok 2:** Tabela przestawna (Pivot Table):
- Wiersze: GrandPrix
- Wartości: LICZ(Id_w) [count]

**Krok 3:** Posortuj rosnąco wg liczby → pierwszy wiersz to najmniej.

Lub formuła:
- Lista unikalnych miejsc: `=UNIKATOWE(C:C)` (Excel 365) lub ręcznie.
- Liczba dla każdego: `=LICZ.JEŻELI(C:C; A2)`.
- Min: `=MIN(B2:B30)` → odpowiednie miejsce.

## Reference informatyczny - GROUP BY + COUNT

> Reference - Agregacja po kolumnie:
> - **SQL** `GROUP BY` grupuje wiersze po podanej kolumnie.
> - **COUNT(\*)** zwraca liczbę wierszy w grupie.
> - **HAVING** filtruje grupy (nie pojedyncze wiersze - to robi WHERE).
> - **ORDER BY ASC LIMIT 1** zwraca minimum.
> - **Counter** w Pythonie: `from collections import Counter; Counter([ ])`.

## Schemat oceniania CKE

> Klucz CKE (zadanie 6.2, max 2 pkt):
> - **2 pkt** - prawidłowa nazwa miejsca (Indie)
> - **0 pkt** - niepełna lub błędna albo brak
> - Nie przyznaje się 1 pkt.

## Typowe pułapki

- **Pominięcie zakresu lat** - w pliku Wyscigi mogą być różne lata, ale zadanie podaje 2000-2012, więc filtruj.
- W rzeczywistości plik zawiera dokładnie 2000-2012, więc filtr nie zmienia wyniku.
- **Pomylenie z najwięcej (MAX zamiast MIN)** - uważnie czytaj polecenie.
- **Pominięcie kropki/duplikatów** - jeśli plik ma dwa wpisy dla tego samego Grand Prix w tym samym roku, COUNT zliczy oba.
- **Indie vs India** - w pliku spolszczone nazwy.
- **Pomylenie z pytaniem o kierowców** - pytamy o MIEJSCA, nie kierowców.

## Złożoność obliczeniowa

- GROUP BY: O(N log N) (sortowanie wewnętrzne) lub O(N) z hash.
- ORDER BY: O(G log G), gdzie G = liczba grup.
- **Całkowita: O(N log N)** lub O(N) z odpowiednimi indeksami.

## Linki

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

## Podobne zadania

- [Zadanie 6.2](https://matura.lol/question/informatyka-2015-maj-matura-stara-podstawowa-2/zad/6.2) — Zadanie 6.2. (3 pkt) Podaj imię i nazwisko osoby, która ma łącznie najwięcej środków pieniężnych na wszystkich swoich kontach, oraz podaj wartość tych środków.
- [Zadanie 6.3](https://matura.lol/question/informatyka-2015-maj-matura-stara-podstawowa-2/zad/6.3) — Zadanie 6.3. (3 pkt) Podaj imiona i nazwiska osób, które są właścicielami największej liczby kont.
- [Zadanie 6.1](https://matura.lol/question/informatyka-2026-maj-matura-stara-rozszerzona-2/zad/6.1) — Zadanie 6.1. (0-2) Podaj imię i nazwisko klienta, który dokonał łącznie najwięcej transakcji w całym analizowanym okresie, oraz podaj liczbę tych transakcji.
- [Zadanie 6.2](https://matura.lol/question/informatyka-2026-maj-matura-stara-rozszerzona-2/zad/6.2) — Zadanie 6.2. (0-2) Podaj, ile kobiet (K) oraz ilu mężczyzn (M) spośród klientów sieci sklepów nie kupiło niczego w całym analizowanym okresie.

_Ostatnia aktualizacja danych: 2026-10-03_
