Wpis z mikrobloga

Hej Mirki z #sql (oracle), mógłby ktoś pomóc zadaniu :)?

Mam taką treść zadania:
5. Z widoku empdetailsview wyświetl średnie zarobki dla każdego stanu/prowincji, dla którego mieszkańcy mają imiona zawierające literę a.

Mam widok empdetailsview, w nim kolumny firstname, lastname, salary, state_province.

Póki co jestem w stanie napisać zapytanie które liczyłoby średnią pensję dla stanów ale tylko dla ludzi którzy mają a w imieniu. Natomiast nie wiem jak dojść do tego żeby liczyło średnią zarobków wszystkich ale tylko dla stanów gdzie mieszkają ludzie z a w imieniu.

Ktoś zarzuci jakimś pomysłem? Byłbym wdzięczny :)

#oracle, #naukaprogramowania
  • 12
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@edgar_k: Dzięki, doszedłem do tego, że trzeba użyć podzapytania. Kwestia tylko jak to ma wyglądać? W głównym zapytaniu pewnie muszę wyswietlić stateprovince, avg(salary) i group by stateprovince?

Tylko co powinno znaleźć się w podzapytaniu?
  • Odpowiedz
@edgar_k: No właśnie tu leży mój problem, bo jak napiszę

select distinct stateprovince from empdetailsview where upper(firstname) like ('%A%');

to jak mam przekazać salary wszystkich ludzi z danej prowincji do głównego zapytania?
  • Odpowiedz
to jak mam przekazać salary wszystkich ludzi z danej prowincji do głównego zapytania?


@bziuuumor: select avg(salary) from province where province.id IN (select disctint province_id from names where name LIKE '%A')
Cos takiego
  • Odpowiedz
@bziuuumor: A to przypadkiem nie liczy średniej dla prowincji gdzie są ludzie z literą a w imieniu, ale średnia jest liczona tylko dla tych ludzi z literą A?

Zrobiłem sobie zapytanie
select stateprovince, avg(salary) from empdetailsview group by stateprovince
i wyniki się nie pokrywają, a powinny.
  • Odpowiedz
@barteb: tak, to to robi, niedoczytałem wymagania ;) Zapytanie @edgar_k po dodaniu stateprovince i grupowania po tym będzie śmigać. W podzapytaniu masz wybór prowincji które mają ludzi z A i tylko do nich się ograniczasz licząc średnią
  • Odpowiedz
@edgar_k:

select avg(salary) from province where province.id IN (select disctint provinceid from names where name LIKE '%A')


zmodyfikowałem Twoją
  • Odpowiedz