Oracle SQL: Lista 1 – funkcje, podzapytania 1. „Stworzyć” nazwy
Transkrypt
Oracle SQL: Lista 1 – funkcje, podzapytania 1. „Stworzyć” nazwy
Oracle SQL: Lista 1 – funkcje, podzapytania 1. „Stworzyć” nazwy departamentów zawierające kod kraju, podkreślnik oraz identyfikator dopełniony zerami do długości 6 znaków (LPad), 2. To samo zrobić za pomocą funkcji SUBSTR – do identyfikatora dodać stały napis ‘000000’ i skopiować ostatnie 6 znaków. 3. Sprawdzić długość najdłuższego nazwiska w EMPLOYEES, następnie wyświetlić listę nazwisk i imion w postaci „stabularyzowanej”: najpierw nazwisko + odpowiednia ilość spacji (zgodnie z wyznaczoną wcześniej wartością + 1), potem imię UWAGA: aby zobaczyć „właściwy” wynik w SQLTools, należy kliknąć prawym klawiszem myszki na tabeli z wynikami zapytania i wykonać komendę Open in Editor (tabela z wynikami używa czcionek o zmiennej szerokości, edytor używa czcionek o stałej szerokości). 4. Używając funkcji TRANSLATE napisać komendę SELECT (na bazie pseudoperspektywy DUAL), która usunie z napisu polskie literki (wstawi odpowiedniki bez ogonków). 5. Napisać komendę, która na podstawie pola STREET_ADDRES tablicy LOCATIONS stworzy nazwy ulic bez dodatkowych oznaczeń (usuwamy cyfry, spacje myślnik z początku oraz cyfry, spację, przecinek i kropkę z końca) - LTrim, RTrim. 6. Napisać komendę, która dla każdego pracownika zbuduje napis w postaci: imię nazwisko (imię_manager nazwisko_manager) – w przypadku braku managera nawiasy i końcowe spacje mają zostać usunięte (zastosować otwarte lewostronnie złączenie tablicy EMPLOYEES samej ze sobą i funkcję REPLACE). 7. Napisać komendę SELECT, która dla każdego pracownika wyświetli datę wypłaty premii w związku z upłynięciem kolejnego roku zatrudnienia w bieżącym roku kalendarzowym – za datę wypłaty premii przyjmujemy ostatni dzień miesiąca w którym wypada rocznica daty zatrudnienia (funkcje: to_char, to_number, to_date, SYSDATE, Last_Day, Add_Months) 8. Do poprzedniego zadania: wykorzystać zapytanie jako subselect i, korzystając z konstrukcji CASE, wyświetlić daty wypłaty premii z ciągu najbliższego roku (jak data wypłaty mniejsza od bieżącej, to dodaj 1 rok = 12 miesięcy). 9. Do poprzedniego zadania: wykorzystać zapytanie jako subselect, i wyświetlić wypłaty na najbliższe pół roku (dla bieżącej daty za pomocą Last_Day znaleźć ostatni dzień miesiąca a potem dodać do niego 6 miesięcy - Add_Months). 10. Zbudować zapytanie, które dla każdego pracownika wyświetli nazwisko, imię i datę zatrudnienia w formacie: Poniedziałek, 17 marca 201 4.r (proszę zwrócić uwagę na odpowiednia wielkość liter w nazwie dnia tygodnia) – zastosować To_Char (wielokrotnie), łączenie napisów i odpowiednie formatowanie (oraz InitCap dla nazwy dnia i LTrim/RTrim – dzień, miesiąc). Proszę zwrócić uwagę na fakt, że zarówno dzień jak i miesiąc są dopełniane spacjami. 11. To samo co w poprzednim zadaniu zrobić za pomocą konstrukcji CASE (dla dni tygodnia i miesięcy) – nazwy miesięcy w dopełniaczu (tylko CASE i To_Char/To_Number) 12. jak w zadaniu 10 ale miesiące wyświetlić w postaci liczb rzymskich. Podobnie jak w zadaniu 10 – spacje po nazwie miesiąca. 13. obliczyć ile dni pracował pierwszym miesiącu swojej pracy każdy z pracowników oraz wyznaczyć ich pensję za pierwszy miesiąc (z dokładnością do dwóch miejsc po przecinku) proporcjonalnie do czasu zatrudnienia (np. pracownik zatrudniony 13 marca – powinien dostać pensję w wysokości (31-12)/31). Proszę nie opierać się o operacje arytmetyczne na datach. Można wykorzystać zapytania z podzapytań (To_Char, To_Number, Last_Day, Round).