Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dziwne zadanie SQL.
Forum PHP.pl > Forum > Bazy danych > MySQL
tanwel_programmer
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.
maly_swd
Podaj co Ci sie udalo zrobic, np projekt bazy, jakies zapytania?

ps.na ktorym roku daja takie zadania?
tanwel_programmer
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ć.
tvister
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.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.