Kategoria: Oracle SQL

Zadanie 13.

Znajdź te zamówienia, w których zamówiono 5 lub więcej różnych produktów.

Schemat: OE, Tabela: Order_Items, Kolumny: order_id, product_id, Wynik: 73 rows

p13

 

 

 

 

Rozwiązanie

SELECT order_id, COUNT(product_id) as Products
FROM order_items
GROUP BY order_id
HAVING COUNT(product_id) >= 5
ORDER BY order_id;

[collapse]

Zadanie 12.

Podlicz, ile jest produktów w każdej kategorii oraz policz średnią cenę produktu w kategorii.

Schemat: OE, Tabela: Product-Information, Kolumny: category_id, product_id, list_price, Wynik: 17 rows

p12

 

 

 

 

 

Rozwiązanie

SELECT category_id as "Category", COUNT(product_id) as "Count", to_char(AVG(list_price), '9999D99') as "Avg price"
FROM product_information
GROUP BY category_id
ORDER BY category_id;

[collapse]

Zadanie 11.

Stwórz listę pracowników – id, imię, nazwisko oraz podaj informację, czy dana osoba nadal pracuje (pracuje / nie pracuje).

Schemat: HR, Tabele: Employees, Job_History, Kolumny: employee_id, first_name, last_name, end_date, Wynik: 110 rows

p11

 

 

 

Rozwiązanie

SELECT employee_id, e.first_name, e.last_name,
CASE
WHEN jh.end_date IS NULL THEN 'pracuje'
ELSE 'nie pracuje'
END AS Pracownik
FROM employees e LEFT OUTER JOIN job_history jh USING(employee_id)
ORDER BY employee_id;

[collapse]

Zadanie 10.

Policz, ile było zamówień na produkty z każdej kategorii w każdym roku.

Schemat: OE, Tabele: Orders, Order_Items, Product_Information, Kolumny: order_id, product_id, order_date, category_id, Wynik: 52 rows

p10

 

 

 

 

Rozwiązanie

SELECT to_char(o.order_date, 'YYYY') "Year", pi.category_id "Category", COUNT(product_id) "Amount"
FROM orders o INNER JOIN order_items oi
USING(order_id)
INNER JOIN product_information pi
USING(product_id)
GROUP BY to_char(o.order_date, 'YYYY'), pi.category_id
ORDER BY "Year", "Category";

[collapse]

Zadanie 9.

Stwórz raport sprzedażowy – policz wartość zamówień w każdym miesiącu każdego roku. Kolumnę z wartościami zamówień sformatuj według wzoru (screen).

Schemat: OE, Tabela: Orders, Kolumny: order_date, order_total, Wynik: 25 rows

p9

 

 

 

 

 

Rozwiązanie

SELECT to_char(order_date, 'YYYY') as "Year", to_char(order_date, 'MM') as "Month", to_char(SUM(order_total), '999,999.99') as "Total"
FROM orders
GROUP BY to_char(order_date, 'YYYY'), to_char(order_date, 'MM')
ORDER BY "Year", "Month";

[collapse]

Zadanie 8.

W których magazynach dostępne są produkty o id 2457, 3391, 1799 i 3003? W wyniku podaj nr produktu, nazwę magazynu oraz dostępną ilość towaru.

Schemat: OE, Tabele: Inventories, Warehouses, Kolumny: product_id, quantity_on_hand, warehouse_name, warehouse_id, Wynik: 32 rows

p8

 

 

 

 

Rozwiązanie

SELECT i.product_id, i.quantity_on_hand, w.warehouse_name
FROM inventories i INNER JOIN warehouses w
USING(warehouse_id)
WHERE i.product_id IN(2457, 3391, 1799, 3003)
ORDER BY i.product_id, i.quantity_on_hand DESC;

[collapse]

Zadanie 7.

Policz, ile zamówień i na jaką łączną wartość złożył każdy z klientów w 2006 roku.

Schemat: OE, Tabela: Orders, Kolumny: customer_id, order_id, order_total, order_date, Wynik: 13 rows

p7

 

 

 

Rozwiązanie

SELECT customer_id, COUNT(order_id) as Zamowienia, SUM(order_total) as Wartosc
FROM Orders
WHERE EXTRACT(YEAR FROM order_date) = '2006'
GROUP BY customer_id;

[collapse]

Zadanie 6.

Zrób zestawienie – który departament jakie ma stanowiska? Podaj nazwy departamentów i stanowisk oraz określ, ilu ludzi pracuje w każdym z nich.

Schemat: HR, Tabele: Departaments, Jobs, Employees, Kolumny: Department_id, department_name, job_id, job_title, Wynik: 19 rows

p6

 

 

 

Rozwiązanie

SELECT d.department_name as Departament, j.job_title as Stanowisko, COUNT(*) as Pracownicy
FROM Departments d INNER JOIN Employees e
USING(department_id) INNER JOIN Jobs j
USING(job_id)
GROUP BY d.department_name, j.job_title
ORDER BY Departament, Stanowisko;

[collapse]

Zadanie 4.

Dla klientów o id 103, 227, 131, 172, 165 i 213 wyświetl imiona, nazwiska oraz tytuły grzecznościowe (Pan / Pani).

Schemat: OE, Tabela: Customers, Kolumny: cust_first_name, cust_last_name, gender, Wynik: 6 rows

p4

 

 

 

 

Rozwiązanie

SELECT CASE gender
WHEN 'F' THEN 'Pani'
ELSE 'Pan'
END AS tytul,
cust_first_name, cust_last_name
FROM customers
WHERE customer_id IN(103, 227, 131, 172, 165, 213)
ORDER BY customer_id;

[collapse]
« Starsze wpsiy Recent Entries »