Skip to content

Commit 112655e

Browse files
committed
Lab2 done, renamed files, now they will contain cw[id]
1 parent 959e5c5 commit 112655e

File tree

3 files changed

+346
-0
lines changed

3 files changed

+346
-0
lines changed

cw2-koncowe.sql

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
USE Northwind
2+
3+
-- ćwiczenie 1
4+
-- 1. Napisz polecenie, które oblicza wartość sprzedaży dla każdego
5+
-- zamówienia i wynik zwraca posortowany w malejącej kolejności
6+
-- (wg wartości sprzedaży).
7+
-- 2. Zmodyfikuj zapytanie z punktu 1., tak aby zwracało pierwszych 10
8+
-- wierszy
9+
-- 3. Zmodyfikuj zapytanie z punktu 2., tak aby zwracało 10 pierwszych
10+
-- produktów wliczając równorzędne. Porównaj wyniki.
11+
12+
SELECT TOP 10 WITH TIES OrderID, SUM((UnitPrice * Quantity * (1 - Discount))) as 'wartosc'
13+
FROM [Order Details]
14+
GROUP BY OrderID
15+
16+
-- ćwiczenie 2
17+
-- 1. Podaj liczbę zamówionych jednostek produktów dla produktów o
18+
-- identyfikatorze < 3
19+
20+
SELECT ProductID, COUNT(*) as 'ilosc'
21+
FROM [Order Details]
22+
WHERE ProductID < 3
23+
GROUP BY ProductID
24+
25+
-- 2. Zmodyfikuj zapytanie z punktu 1. tak aby podawało liczbę
26+
-- zamówionych jednostek produktu dla wszystkich produktów
27+
28+
SELECT ProductID, COUNT(*) as 'ilosc'
29+
FROM [Order Details]
30+
GROUP BY ProductID
31+
32+
-- 3. Podaj wartość zamówienia dla każdego zamówienia, dla którego
33+
-- łączna liczba zamawianych jednostek produktów jest > 250
34+
35+
SELECT ProductID, SUM((UnitPrice * Quantity * (1 - Discount))) as 'wartosc'
36+
FROM [Order Details]
37+
GROUP BY ProductID
38+
HAVING sum(Quantity)>250
39+
40+
-- ćwiczenie 3
41+
42+
-- 1. Napisz polecenie, które oblicza sumaryczną ilość zamówionych
43+
-- towarów i porządkuje wg productid i orderid oraz wykonuje
44+
-- kalkulacje rollup.
45+
46+
SELECT ProductID, OrderID ,SUM(quantity) as 'quantity sum'
47+
FROM [Order Details]
48+
GROUP BY ROLLUP (ProductID, OrderID)
49+
50+
51+
-- 2. Zmodyfikuj zapytanie z punktu 1., tak aby ograniczyć wynik tylko do
52+
-- produktu o numerze 50.
53+
54+
SELECT ProductID, OrderID ,SUM(quantity) as 'quantity sum'
55+
FROM [Order Details]
56+
WHERE ProductID=50
57+
GROUP BY ROLLUP (ProductID, OrderID)
58+
59+
-- 3. Jakie jest znaczenie wartości null w kolumnie productid i orderid?
60+
61+
--odp: oznacza to sumę podliczoną dla danej kolumny
62+
63+
-- 4. Zmodyfikuj polecenie z punktu 1. używając operator cube zamiast
64+
-- rollup. Użyj również funkcji GROUPING na kolumnach productid i
65+
-- orderid do rozróżnienia między sumarycznymi i szczegółowymi
66+
-- wierszami w zbiorze
67+
68+
SELECT ProductID, OrderID ,SUM(quantity) as 'quantity sum',
69+
GROUPING(ProductID) as 'prdid_grp', GROUPING(OrderID) as 'ordid_grp'
70+
FROM [Order Details]
71+
GROUP BY CUBE (ProductID, OrderID)
72+
73+
74+
-- 5. Które wiersze są podsumowaniami?
75+
-- Które podsumowują według produktu, a które według zamówienia?
76+
77+
-- wiersze które są podsumowaniami mają odpowiednio 1 w prdid_grp lub ordid_grp

cw2.sql

Lines changed: 269 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,269 @@
1+
--totalny chaos zaraz po zmianie prowadzacego dlatego to ten .sql nie jest az tak zorganizowany sadge ;-(
2+
3+
4+
-- SKILL CHECK BY ZYGMUNT GAMING
5+
USE library
6+
SELECT title
7+
FROM title
8+
WHERE title_no=10;
9+
10+
USE library
11+
SELECT member_no
12+
FROM loanhist
13+
WHERE isnull(fine_assessed,0) > isnull(fine_paid,0) + isnull(fine_waived,0)
14+
15+
USE library
16+
SELECT DISTINCT city, state
17+
FROM adult
18+
19+
USE library
20+
SELECT (lower(firstname + middleinitial + substring(lastname,1,2))) AS 'email_name'
21+
FROM member
22+
WHERE lastname = 'Anderson';
23+
24+
USE Northwind
25+
SELECT (UnitPrice * Quantity * (1- Discount)) as 'wartosc'
26+
FROM [Order Details]
27+
WHERE OrderID = 10250;
28+
29+
30+
USE Northwind
31+
SELECT SupplierID, (isnull(Phone, 'brak') + ', ' + isnull(Fax, 'brak')) as 'Phone and Fax'
32+
FROM Suppliers;
33+
34+
USE Northwind
35+
SELECT TOP 5 WITH TIES orderid, productid, quantity
36+
FROM [Order Details]
37+
ORDER BY Quantity DESC;
38+
39+
-- ##### CW 1 KONCOWE:
40+
-- #### Ćwiczenie 1 – wybieranie danych
41+
--1. Napisz polecenie select, za pomocą którego uzyskasz tytuł i numer książki
42+
43+
USE library
44+
SELECT title_no, title
45+
FROM title
46+
47+
48+
--2. Napisz polecenie, które wybiera tytuł o numerze 10
49+
50+
USE library
51+
SELECT title
52+
FROM title
53+
WHERE title_no = 10
54+
55+
56+
--3. Napisz polecenie, które wybiera numer czytelnika i karę dla tych czytelników, którzy mają kary między $8 a $9
57+
58+
59+
USE library
60+
SELECT member_no, fine_assessed
61+
FROM loanhist
62+
WHERE fine_assessed BETWEEN 8 AND 9
63+
64+
--4. Napisz polecenie select, za pomocą którego uzyskasz numer książki i autora dla wszystkich książek, których utorem jest Charles Dickens lub Jane Austen
65+
66+
USE library
67+
SELECT title_no, author
68+
FROM title
69+
WHERE author='Charles Dickens' or author='Jane Austen'
70+
71+
--5. Napisz polecenie, które wybiera numer tytułu i tytuł dla wszystkich rekordów zawierających string „adventures” gdzieś w tytule
72+
73+
USE library
74+
SELECT title_no, title
75+
FROM title
76+
WHERE title LIKE '%adventures%'
77+
78+
--6. Napisz polecenie, które wybiera numer czytelnika, karę oraz zapłaconą karę dla wszystkich, którzy jeszcze nie zapłacili.
79+
80+
USE library
81+
SELECT member_no, fine_assessed, fine_paid
82+
FROM loanhist
83+
WHERE fine_paid=0
84+
85+
--7. Napisz polecenie, które wybiera wszystkie unikalne pary miast i stanów z tablicy adult.
86+
USE library
87+
SELECT DISTINCT city, state
88+
FROM adult
89+
90+
91+
--##### Ćwiczenie 2 – manipulowanie wynikowym zbiorem
92+
93+
--1. Napisz polecenie, które wybiera wszystkie tytuły z tablicy title i wyświetla je w porządku alfabetycznym.
94+
95+
USE library
96+
SELECT title
97+
FROM title
98+
ORDER BY title ASC;
99+
100+
--2. Napisz polecenie, które:
101+
-- wybiera numer członka biblioteki, isbn książki i wartość naliczonej kary dla wszystkich wypożyczeń, dla których naliczono karę
102+
-- stwórz kolumnę wyliczeniową zawierającą podwojoną wartość kolumny fine_assessed
103+
-- stwórz alias ‘double fine’ dla tej kolumny
104+
105+
USE library
106+
SELECT member_no, isbn, sum(fine_assessed) as 'total fines', fine_assessed * 2 as 'double fine'
107+
FROM loanhist
108+
WHERE fine_assessed IS NOT NULL AND fine_assessed!=0
109+
GROUP BY member_no, isbn , fine_assessed
110+
111+
--3. Napisz polecenie, które generuje pojedynczą kolumnę, która zawiera kolumny: imię
112+
--członka biblioteki, inicjał drugiego imienia i nazwisko dla
113+
--wszystkich członków biblioteki, którzy nazywają się Anderson
114+
--nazwij tak powstałą kolumnę „email_name”
115+
-- zmodyfikuj polecenie, tak by zwróciło „listę proponowanych loginów e
116+
--mail” utworzonych przez połączenie imienia członka biblioteki, z inicjałem drugiego imienia i pierwszymi dwoma
117+
--literami nazwiska (wszystko małymi literami).
118+
-- wykorzystaj funkcję SUBSTRING do uzyskania części kolumny
119+
--znakowej oraz LOWER do zwrócenia wyniku małymi literami
120+
-- wykorzystaj operator (+) do połączenia stringów.
121+
122+
USE library
123+
SELECT LOWER(firstname + middleinitial + substring(lastname,1,2)) as 'email_name'
124+
FROM member
125+
WHERE lastname='Anderson'
126+
127+
--4. Napisz polecenie, które wybiera title i title_no z tablicy
128+
-- title. Wynikiem powinna być pojedyncza kolumna o formacie jak w
129+
-- przykładzie poniżej:
130+
-- The title is: Poems, title number
131+
-- 7
132+
-- Czyli zapytanie powinno zwracać pojedynczą kolumnę w oparciu
133+
-- o wyrażenie, które łączy 4 elementy:
134+
-- stała znakowa ‘The title is:’
135+
-- wartość kolumny title
136+
-- stała znakowa ‘title number’
137+
-- wartość kolumny title_no
138+
139+
USE library
140+
SELECT 'The title is: ' + title + ', title number ' + str(title_no)
141+
FROM title
142+
ORDER BY title_no;
143+
144+
145+
-- #2 AGREGATY
146+
147+
USE Northwind
148+
149+
-- 1. Podaj liczbę produktów o cenach mniejszych niż 10$ lub
150+
-- większych niż 20$
151+
152+
SELECT COUNT(ProductID) as 'Count'
153+
FROM Products
154+
WHERE UnitPrice<10 or UnitPrice<20;
155+
156+
157+
158+
159+
-- 2. Podaj maksymalną cenę produktu dla produktów o cenach
160+
-- poniżej 20$
161+
162+
SELECT TOP 1 ProductName,UnitPrice
163+
FROM Products
164+
WHERE UnitPrice<20
165+
ORDER BY UnitPrice DESC;
166+
167+
168+
169+
170+
-- 3. Podaj maksymalną, minimalną i średnią cenę produktu dla
171+
-- produktów sprzedawanych w butelkach (‘bottle’)
172+
173+
174+
SELECT (SELECT TOP 1 UnitPrice
175+
FROM Products
176+
WHERE QuantityPerUnit LIKE '%bottle%'
177+
ORDER BY UnitPrice DESC) as 'max price',
178+
(SELECT TOP 1 UnitPrice
179+
FROM Products
180+
WHERE QuantityPerUnit LIKE '%bottle%'
181+
ORDER BY UnitPrice ) as 'min price',
182+
(SELECT AVG(UnitPrice)
183+
FROM Products
184+
WHERE QuantityPerUnit LIKE '%bottle%') as 'avg price';
185+
186+
-- 4. Wypisz informację o wszystkich produktach o cenie
187+
-- powyżej średniej
188+
--najpierw liczymy xddxdxdx
189+
190+
SELECT AVG(UnitPrice)
191+
FROM Products;
192+
193+
SELECT *
194+
FROM Products
195+
WHERE UnitPrice > 28.8663;
196+
197+
-- 5. Podaj wartość zamówienia o numerze 10250
198+
SELECT SUM((UnitPrice * Quantity * (1 - Discount)))
199+
FROM [Order Details]
200+
WHERE OrderID=10250;
201+
202+
-- ćwiczenie kolejne
203+
204+
-- 1. Podaj maksymalną cenę zamawianego produktu dla
205+
-- każdego zamówienia. Posortuj zamówienia wg
206+
-- maksymalnej ceny produktu
207+
208+
209+
SELECT OrderID, MAX((UnitPrice * Quantity * (1 - Discount))) as maxprice
210+
FROM [Order Details]
211+
GROUP BY OrderID
212+
ORDER BY maxprice DESC;
213+
214+
215+
-- 2. Podaj maksymalną i minimalną cenę zamawianego
216+
-- produktu dla każdego zamówienia
217+
218+
SELECT OrderID,
219+
MAX((UnitPrice * Quantity * (1 - Discount))) as maxprice,
220+
MIN((UnitPrice * Quantity * (1 - Discount))) as minprice
221+
FROM [Order Details]
222+
GROUP BY OrderID;
223+
224+
-- 3. Podaj liczbę zamówień dostarczanych przez
225+
-- poszczególnych spedytorów
226+
227+
SELECT ShipVia, COUNT(OrderId) as no_orders
228+
FROM Orders
229+
GROUP BY ShipVia
230+
231+
-- 4. Który ze spedytorów był najaktywniejszy w 1997 roku?
232+
SELECT Shippers.CompanyName, COUNT(OrderId) as no_orders
233+
FROM Orders
234+
INNER JOIN Shippers ON ShipperID = Orders.ShipVia
235+
WHERE YEAR(OrderDate)=1997
236+
GROUP BY Shippers.CompanyName
237+
ORDER BY no_orders DESC
238+
239+
--#ćw kolejne
240+
-- 1. Wyświetl zamówienia dla których liczba pozycji
241+
-- zamówienia jest większa niż 5
242+
243+
SELECT orderid, COUNT(orderid) as number
244+
FROM [Order Details]
245+
GROUP BY orderid
246+
HAVING COUNT(OrderID)>5
247+
248+
-- 2. Wyświetl klientów, dla których w 1998 roku zrealizowano
249+
-- więcej niż 8 zamówień (wyniki posortuj malejąco wg
250+
-- łącznej kwoty za dostarczenie zamówień dla każdego z
251+
-- klientów)
252+
253+
254+
SELECT Orders.CustomerID, COUNT(Orders.OrderID) as 'total orders', SUM((UnitPrice * Quantity * (1 - Discount))) as 'total sum'
255+
FROM Orders
256+
INNER JOIN [Order Details] ON Orders.OrderID = [Order Details].OrderID
257+
WHERE YEAR(ShippedDate)=1998
258+
GROUP BY CustomerID
259+
HAVING COUNT(Orders.OrderID)>8
260+
ORDER BY 'total sum' DESC;
261+
262+
-- ??
263+
264+
SELECT Orders.CustomerID, COUNT(Orders.OrderID) as 'total orders'
265+
FROM Orders
266+
WHERE YEAR(ShippedDate)=1998
267+
GROUP BY CustomerID
268+
HAVING COUNT(Orders.OrderID)>8
269+
File renamed without changes.

0 commit comments

Comments
 (0)