1

Temat: problem z zapytaniami

Witam mam problem z zapytaniem, a dokladnie nie wiem jak je sformulowac. Zapytanie ma mi wypisac najczescie wypozyczane auto opisane jako id_auto w tabeli wypozyczenia.

2

Odp: problem z zapytaniami

Trochę mało napisałeś o tym zapytaniu.

Interesuje cie przypadki wypożyczeń czy długość wypożyczenia?
Jaka jest struktura tabeli i logika biznesowa bazy danych?

Najpewniej będziesz musiał zagregować wartości Countem lub Sumą. Ale to jest tylko domniemanie.

3

Odp: problem z zapytaniami

chodzi mi o przypadki wypozyczen.

id_wypozyczenia | id_klient | id_auto | godzina_wypozyczenia | godzina_zwrotu | cena_wypozyczenia | czy_oddal | zastrzezenia
-----------------+-----------+---------+----------------------+----------------+-------------------+-----------+--------------
               1 |         1 |       1 | 10:00:00             | 12:00:00       |               100 | t         | f
               2 |         2 |       2 | 12:00:00             | 14:00:00       |                90 | t         | f
               3 |         3 |       3 | 13:30:00             | 15:30:00       |                80 | t         | f
               4 |         4 |       4 | 10:00:00             | 12:00:00       |               120 | t         | f
               5 |         1 |       4 | 12:00:00             | 00:00:00       |               120 | f         | t

Tak wyglada tabela. Chodzi mi o wyswietlenie najczescie wypozyczanego auta. Czyli o id_auto nr 4 bo ono jest wypozyczane dwa razy reszta tylko raz. Tylko nie mam pojecia jak sformulowac takie zapytanie. Ja dopiero zaczynam zabawe z SQLem wiec mam docs spore problemy i prisilbym bardzo o pomoc. Podobnie jest z id_klient tez chcem wyswietlic ktory klient najczesciej wypozyczal jakies auto.

4

Odp: problem z zapytaniami

Moze jakos tak ale chwilowo nie ma postgresa aby sprawdzic czy dziala


select id_auto from (select id_auto, count(*) as ilosc from wypozyczenia group by id_auto) f1 where
ilosc=(select max(ilosc) from (select id_auto, count(*) as ilosc from wypozyczenia group by id_auto) f2)

5

Odp: problem z zapytaniami

Ta wersja powinna być tańsza ale nie poradzi sobie przy remisie na pierwszym miejscu.

SELECT 
     id_auto, 
     count(*) AS ilosc 
FROM wypozyczenia 
GROUP BY by id_auto
ORDER BY ilosc DESC
LIMIT 1

6

Odp: problem z zapytaniami

Tylko, że jak będzie więcej samochodów z taka sama ilością wypożyczeń to wypisze tylko jednego.