T-SQL - jak wykonać zapytanie?

0

Cześć,

Mam bazę danych wideoteka i mam kolumny: id, nazwa oraz rodzaj.
Zadanie brzmi: wypisz liczbę płyt każdego rodzaju.

Czy mogę prosić o pomoc w jego wykonaniu?

Pozdrawiam
ZZ

1
select rodzaj, count(*) from wideoteka group by rodzaj
0

Dziękuję.

Jeszcze jakby ktoś wiedział jak zrobić:
Obliczyć wartość wszystkich książek z każdego rodzaju (bez i z super agregacją – wykorzystać operator cube).

Zapomniałem dodać, że jest tam jeszcze kolumna "cena".

1

Bez cube tak:

select rodzaj, sum(cena) from wideoteka group by rodzaj

a z cube to zapewne

select rodzaj, sum(cena) from wideoteka group by rodzaj with cube

tyle że cube i rollup po prostu dorzucą trochę dodatkowych danych

0

Super! Dzięki. Kurcze mam 3 tuziny takich zadań i kilka jeszcze mi zostało. Czy możecie mi jeszcze pomóc rozgryźć to:

Wypisz najdroższą płytę z każdego rodzaju (podzapytanie skorelowane).

1

Zasadniczo jest tutaj zakaz rozwiązywania komuś całych prac domowych, może jednak warto się tego nauczyć zamiast prosić innych o rozwiązanie?
Zastanówmy się nad twoim problemem i rozłóżmy go na fragmenty:
"Wypisz najdroższą płytę z każdego rodzaju"
Pierwsze co jest nam potrzebne to wybranie maksymalnej ceny dla każdego rodzaju:

select rodzaj, max(cena) from videoteka group by rodzaj

Teraz mając już cenę i rodzaj potrzebujemy dobrać sobie do tego produkt który pasuje

select v2.nazwa, v2.cena from
(select rodzaj, max(cena) as maks from videoteka as v1 group by rodzaj) as sub inner join videoteka as v2 on sub.rodzaj = v2.rodzaj
where v2.cena = sub.maks and v2.rodzaj = sub.rodzaj
0

Rozumiem, zasady są po to żeby ich przestrzegać. Jednak, to nie jest typowe "rozwiązywanie zadań domowych" Dostaliśmy prawie 40 takich pytań, siedzę od wczoraj i robię :) Obecnie brakuje mi już tylko 6. Dlatego, traktuję to jako pomoc, a nie wykonanie "za mnie".

Dziękuję za wytłumaczenie. Ten przykład był trudny, nie wpadłbym na to.

W sumie zostało mi jedno, którego w ogóle nie wiem jak ugryźć (resztę mam nadzieję, że ogarnę). Jakbyś mógł spojrzeć: Wypisz nazwy płyt i nazwiska wykonawców i podaj rodzaj (jego nazwę) każdej z nich.

Tutaj trzeba podobno skorzystać z "select" między dwoma tablicami (w tej drugiej mamy tylko 2 kolumny: nr rodzaju i jego nazwę). W pierwszej kolumny: id, nazwa, wykonawca oraz nr rodzaju.

1

Nie wygłupiaj się. To twoje "trudne" zadanie wymaga zwykłego inner joina. Nie nauczysz się sqla jak nie będziesz takich zadań robił. To są zresztą banalnie łatwe zadania. U mnie na studiach były zadania z wielokrotnymi złączeniami zarówno inner jak i outer z lewej i z prawej strony połączone z agregatami i podzapytaniami ;]

select p.nazwa, p.nazwisko, r.nazwa_kategorii from plyty as p inner join kategorie as r on plyty.rodzaj = kategorie.id
0

Dzięki wielkie. Jak to jest łatwe, to ja chyba muszę zmienić szkołę ;)

Tutaj wyrzuca mi błąd:

Conversion failed when converting the varchar value 'nazwa_rodzaj1' to data type int.

Można go jakoś naprawić?

1

Na pewno można ale nie wiem jak wygląda baza i jak wygląda zapytanie po którym to dostałeś. A moja szklana kula ostatnio trochę zmętniała...
Wygląda jakbyś chciał przypisać/porównać ze sobą pole które jest stringiem (varchar) i intem

0

Dzięki! Śmiga! Resztę też ogarnąłem :) Idę na kolację :D Miłego tygodnia i jeszcze raz thx!

0

Shalom, Ty chyba dobry dzień miałeś, że taki uczynny się zrobiłeś :D ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1