Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ZESTAW 1
- 1. Wstaw nowy rekord do pracowników, a w nim swoje imię i nazwisko, dzisiejszą datę, a resztę według uznania.
- INSERT INTO pracownicy
- VALUES (1234,'NAZWISKO','IMIE','Q',667,7902,TO_DATE('2016/07/05', 'YYYY/MM/DD'),800,NULL,20);
- 2. Pokaż wszystkich pracowników, którzy mają podwładnych
- SELECT id_pracownika, nazwisko, imie
- FROM pracownicy
- WHERE id_pracownika IN (
- SELECT id_szefa
- FROM pracownicy
- WHERE id_szefa IS NOT NULL
- );
- 3. Pokaż średnie ceny dla wyrobów, nawet dla tych, które nie mają ceny.
- SELECT w.opis, avg(c.cena_cennikowa) AS "Srednia cena cennikowa", avg (c.cena_minimalna) AS "średnia cena minimalna"
- FROM wyroby w
- LEFT JOIN ceny c ON c.id_produktu=w.id_produktu
- GROUP BY w.opis
- ORDER BY w.opis
- 4. Podwoić LIMIT kredytowy klientom, którzy w ciągu ostatniego miesiąca dokonali zamówień. (jakoś tak)
- UPDATE klienci
- SET limit_kredytowy = limit_kredytowy*2
- WHERE id_klienta IN
- (
- SELECT id_klienta
- FROM zamowienia
- WHERE data_zamowienia > '90/10/19'
- );
- ZESTAW 2
- 1. Dodać rekord ze swoimi danymi (imię, nazwisko a reszta dowolna)
- INSERT INTO pracownicy
- VALUES (1234,'NAZWISKO','IMIE','Q',667,7902,TO_DATE('2016/07/05', 'YYYY/MM/DD'),800,NULL,20);
- 2. Wyświetlić zamówienia dla klientów nie z bostonu
- SELECT k.id_klienta, k.miasto, z.id_zamowienia
- FROM klienci k
- LEFT JOIN zamowienia z ON k.id_klienta = z.id_klienta
- WHERE k.miasto != 'BOSTON';
- 3. Wyświetlić ilość pracowników na poszczególnym etacie (+ te co nie ma żadnego pracownika)
- SELECT COUNT(p.id_pracownika) AS "ilosc pracownikow" , e.etat
- FROM pracownicy p
- LEFT JOIN etaty e ON p.id_etatu = e.id_etatu
- GROUP BY e.etat
- 4. Zwiększyć o 10% LIMIT kredytowy klientom, którzy mają MIN. 3 zamówienia
- UPDATE klienci
- SET limit_kredytowy = limit_kredytowy*0.1 + limit_kredytowy
- WHERE id_klienta IN
- (
- SELECT k.id_klienta
- FROM klienci k, zamowienia z
- WHERE z.id_klienta = k.id_klienta
- GROUP BY k.id_klienta
- HAVING COUNT(k.id_klienta) >= 3
- );
- ZESTAW 3
- 1. INSERT
- INSERT INTO pracownicy
- VALUES (1234,'NAZWISKO','IMIE','Q',667,7902,TO_DATE('2016/07/05', 'YYYY/MM/DD'),800,NULL,20);
- 2. wskaż wydziały, które posiadają tylko jednego pracownika
- SELECT w.nazwa, COUNT(p.id_wydzialu) AS "ilosc pracownikow"
- FROM pracownicy p, wydzialy w
- WHERE p.id_wydzialu=w.id_wydzialu
- GROUP BY w.nazwa
- HAVING COUNT(p.id_wydzialu) = 1
- 3. wskaż pracowników, który mają największe obroty (? coś takiego)
- SELECT p.id_pracownika, p.imie, p.nazwisko, SUM(z.wartosc) AS dupa
- FROM pracownicy p
- JOIN klienci k ON p.id_pracownika= k.id_pracownika
- JOIN zamowienia z ON z.ID_KLIENTA = k.id_klienta
- GROUP BY p.id_pracownika, p.imie, p.nazwisko
- ORDER BY dupa DESC;
- 4. Podnieść płące pracowników, którzy mają więcej niż 2 klientów (nie pamiętam o ile)
- UPDATE pracownicy
- SET pensja = pensja + 300
- WHERE id_pracownika IN
- (
- SELECT p.id_pracownika
- FROM pracownicy p, klienci k
- WHERE k.id_pracownika=p.id_pracownika
- GROUP BY p.id_pracownika
- HAVING COUNT(k.id_pracownika) > 2
- );
- ZESTAW 4
- 1. INSERT
- INSERT INTO pracownicy
- VALUES (1234,'NAZWISKO','IMIE','Q',667,7902,TO_DATE('2016/07/05', 'YYYY/MM/DD'),800,NULL,20);
- 2. Wyświetlić MAX i MIN zamówień dla poszczególnych klientow.
- SELECT k.nazwa, MIN(z.wartosc) AS "MIN", MAX(Z.WARTOSC) AS "MAX"
- FROM ZAMOWIENIA Z, KLIENCI K
- WHERE k.id_klienta=Z.id_klienta
- GROUP BY K.NAZWA
- 3. Wyświetlić miasto(chyba), nazwę klienta, ilość sprzedaży i średnią sprzedaży, coś w tym stylu
- SELECT k.miasto, K.NAZWA, COUNT(Z.ID_ZAMOWIENIA), AVG(Z.WARTOSC)
- FROM ZAMOWIENIA Z, KLIENCI K
- WHERE k.id_klienta=Z.id_klienta
- GROUP BY K.MIASTO, K.NAZWA
- 4. Zwiększyć pensje pracowników w dziale "SALES" o 1%, jak dobrze pamiętam
- UPDATE pracownicy
- SET pensja = pensja + pensja*0.01
- WHERE id_pracownika IN
- (
- SELECT p.id_pracownika
- FROM pracownicy p, wydzialy w
- WHERE p.id_wydzialu = w.id_wydzialu
- AND w.nazwa = 'SALES'
- );
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement