Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Dziwne zadanie SQL., Dotyczy dość dziwnego zqadania które mnie przerosło.
tanwel_programme...
post
Post #1





Grupa: Zarejestrowani
Postów: 36
Pomógł: 6
Dołączył: 21.03.2009
Skąd: Obecny :)

Ostrzeżenie: (0%)
-----


Witam, jakiś czas temu dostałem od pewnej osoby która dość długo siedzi w SQL i ogólnie programowaniu pewne ciekawe zadanie. Oto treść:
1. SQL/ERD
Zaprojektuj bazę danych opisaną poniżej. Narysuj diagram ERD, zaznacz klucze i klucze
obce. Następnie przedstaw treść zapytań SQL zwracającychpodane dane. Wskaż
kolumny które należałoby indeksować, aby przyspieszyć przygotowane zapytania.
Korzystaj wyłącznie ze standardu SQL.
Opis bazy:
Baza zawiera informacje o osobach (wszystkich Polakach urodzonych po roku 1900),
takie jak: imię, nazwisko, data urodzenia, płeć, zarobki. Każda osoba może mieć matkę
i/lub ojca. Kobieta może mieć jednego męża, mężczyzna może mieć jedną żonę. Osoby
pracują w przedsiębiorstwach, posiadających nazwę. Jedna osoba może pracować w
kilku przedsiębiorstwach jednocześnie, na umowę zlecenie lub na umowę o pracę.
Każde przedsiębiostwo ma dokładnie jednego
prezesa.
Zapytania:
A. Znajdź imię i nazwisko osoby posiadającej największą liczbę wnucząt.
B. Znajdź średnią ilość pracowników zatrudnionych na umowę zlecenie i średnią
ilość pracowników zatrudnionych na umowę o pracę we wszystkich firmach
C. Znajdź rodzinę (co najwyżej 2 pokoleniową) najmniej zarabiającą. Przedstaw
imię i nazwisko dowolnej osoby z tej rodziny.
Podpowiedź: rodzina 1 pokoleniowa to osoba X z ewentualnym współmałżonkiem.
Rodzina 2 pokoleniowa to rodzina 1 pokoleniowa z wszystkimi jej dziećmi (wraz
z ewentualnymi współmałżonkami) lub rodzicami.


I tu zaczynają się schody. Punkty A oraz B nie stanowią większego problemu , ale punkt C mnie przerósł.
Nie jestem "specjalistą" w SQL ale bardzo chętnie bym się dowiedział jakie jest rozwiązanie tego zadania. Jeżeli ktoś z Państwa ma jakieś pomysły lub jest w stanie rozwiązać takie zadanko to zapraszam.
Wiem, że dla większości speców od sql nie stanowi takie coś większego problemu. Jeżeli byłaby taka możliwość to również mile widziane jest małe objaśnienie lub nakierowanie mnie na właściwą trasę jak wielkie są moje zaległości w SQL.
Go to the top of the page
+Quote Post
maly_swd
post
Post #2





Grupa: Zarejestrowani
Postów: 744
Pomógł: 118
Dołączył: 14.02.2009
Skąd: poziome

Ostrzeżenie: (0%)
-----


Podaj co Ci sie udalo zrobic, np projekt bazy, jakies zapytania?

ps.na ktorym roku daja takie zadania?
Go to the top of the page
+Quote Post
tanwel_programme...
post
Post #3





Grupa: Zarejestrowani
Postów: 36
Pomógł: 6
Dołączył: 21.03.2009
Skąd: Obecny :)

Ostrzeżenie: (0%)
-----


1. Na żadnym roku
2. Schemat bazy danych jest przedstawiony powyżej, proszę o pokazanie metod działania to podepnę sobie go pod odpowiednie typy danych.
Poprzednie punkty robiłem wtedy kiedy dostałem to zadanie a było to jakieś pół roku temu, a to zadanko prezentuję jedynie jako ciekawostkę, jeżeli ktoś potrafi je rozwiązać (konkretnie podpunkc "C") chętnie się dowiem jak to zrobić.
Go to the top of the page
+Quote Post
tvister
post
Post #4





Grupa: Zarejestrowani
Postów: 253
Pomógł: 29
Dołączył: 18.08.2008

Ostrzeżenie: (0%)
-----


To będzie freestyle

  1. SELECT min(sum(zarobki)) FROM BAZA
  2. HAVING 2 > (SELECT count(*) FROM BAZA b1, b2 WHERE b1.nazwisko = b2.nazwisko AND b1.DATA > b2.DATA)


Nie sprawdzałem ale mam nadzieje że rozjaśni temat.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 3.10.2025 - 19:45