You are on page 1of 5

Bazy Danych Ł.

Wąs 2021

Funkcje zwracające konkretny format daty

Tworzenie tabeli za pomocą polecenia [into_tabela]

1. Wyświetla ID pracownika, imię, nazwisko, nazwe działu, wiek, datę wypłaty oraz kwotę
pracowników, a następnie stwórz tabelę [into_tabela] oraz wstaw dane - bez użycia
polecenia CREATE TABLE.

SELECT p.ID_pracownicy, p.imie, p.nazwisko, d.nazwa, p.wiek,

z.data, z.brutto INTO [into_tabela]

FROM [pracownicy] AS p

INNER JOIN [dzialy] AS d ON d.ID_dzialy = p.ID_dzialy

INNER JOIN [zarobki] AS z ON z.ID_pracownicy = p.ID_pracownicy;

Teoria do zagadnień funkcji czasu znajduje się w pliku o nazwie datepart.pdf

Funkcje daty i czasu

• ekstrakcja poszczególnych części daty

SELECT YEAR ( '2013-02-12' ) as Rok,

MONTH( '2013-02-12' ) as Miesiac,

DAY ( '2013-02-12' ) as Dzien

• funkcje zwracające aktualny czas i datę systemową

SELECT SYSDATETIME(),

SYSDATETIMEOFFSET(),

GETDATE(),

GETUTCDATE()
Bazy Danych Ł. Wąs 2021

• DATEADD - dodawanie/odejmowanie jednostek określonego typu z zadanej daty

SELECT DATEADD ( dd,-DAY( GETDATE()-1 ), GETDATE() ) as FirstDayCurrMonth,

DATEADD ( dd,-DAY( GETDATE() ), GETDATE() ) as LastDayPrevMonth

• DATEDIFF - określanie różnicy wyrażonej w konkretnych jednostkach pomiędzy dwiema


datami

SELECT FirstName, LastName, BirthDate,

DATEDIFF ( yy , BirthDate , GETDATE() ) as Age

FROM dbo.Employees

• DATEPART - ekstrakt określonej części daty /czasu

SELECT DATEPART( yy, GETDATE() ) as CurrentYear,

DATEPART( mm, GETDATE() ) as CurrentMonth,

DATEPART( dd, GETDATE() ) as CurrentDay,

DATEPART( ww, GETDATE() ) as CurrentWeek

• DATENAME ( datepart, data ) – pododbna do DATEPART, zwraca wartość znakowa,


określonej parametrem datepart, części daty w tym nazwę dnia tygodnia, miesiąca zgodnie
z ustawieniami @@LANGID (bieżący język dla sesji)

SELECT DATENAME(dw, GETDATE() ) as DzienTygodnia,

DATENAME(mm, GETDATE() ) as Miesiac


Bazy Danych Ł. Wąs 2021

Tworzenie tabeli bez użycia create table

1. Wyświetl zamówienia z bazy danych Northwind z roku 1997 i wstaw je do tabeli orders
utworzonej w bazie danych wt_16_18.

INSERT INTO [orders](orderID, customerID, employeeID, orderdate, requireddate, shippeddate,


shipvia, freight, shipname, shipaddress, shipcity, shipregion, shippostalcode, shipcountry)

(SELECT [OrderID], [CustomerID], [EmployeeID], [OrderDate],


[RequiredDate], [ShippedDate], [ShipVia], [Freight], [ShipName], [ShipAddress], [ShipCity],
[ShipRegion], [ShipPostalCode], [ShipCountry]

FROM [Northwind].[dbo].[Orders] WHERE DATEPART(YEAR,


[OrderDate]) = '1997');

2. Podaj na jaka sumę opiewa każde z zamówień z ostatniego dnia wystawienia zamówień i
piec dni wstecz

select od.orderid, sum(od.unitprice*od.quantity),o.orderdate from "order details" od

inner join orders o

on o.orderid=od.orderid

where o.orderdate between (select max(orderdate) - 5 from orders)

and (select max(orderdate) from orders)

group by od.orderid,o.orderdate;

Widok a tabela

W odróżnieniu od tabel, widoki w SQL Server nie przechowują danych. Widoków używamy w
przypadkach, gdy chcemy zapisać nasze zapytanie SQL, a następnie odwołać się do danych
przy użycia krótkiego polecenia SELECT * FROM NAZWA_WIDOKU. Do widoków możemy
odwoływać się w zapytaniach SQL dokładnie w ten sam sposób, jak w odwołujemy się do
tabel. Tworzenie widoku rozpoczynamy poleceniem CREATE VIEW. Listę widoków możemy
szybko sprawdzić w SSMS wybierając w drzewie Serwer, bazę, a następnie drzew Views.
Bazy Danych Ł. Wąs 2021

Utwórz widok Wyświetlający ID pracownika, imię, nazwisko i wiek, a następnie wstawić nowy
wiersz do tabeli pracownicy wykorzystując widok. (polecenie należy wykonać na bazie z trzema
tabelami pracownicy.dzialy ,zarobki)

CREATE VIEW [vprac_insert] AS SELECT pracID, imie, nazwisko,

wiek FROM [pracownicy];

INSERT INTO [vprac_insert](imie, nazwisko, wiek) values('Test', 'View', 30);

3. Zapytanie zwracające orderID oraz łączną wartość każdego z zamówień; posortować


malejąco (830)

SELECT od.orderID as Zamowienie, SUM(quantity*unitprice) as Wartosc FROM

"Order Details" as ord LEFT JOIN Orders as od

ON ord.OrderID = od.OrderID GROUP BY od.OrderID

4. Zapytanie zwracające nazwę kategorii zawierającej najwięcej produktów (Confections)

SELECT CategoryName FROM

Products as p LEFT JOIN Categories as c

ON p.CategoryID = c.CategoryID GROUP BY c.CategoryID, CategoryName

HAVING COUNT(productID) =

(SELECT MAX(ile) FROM

(SELECT COUNT(ProductID) as ile FROM Products GROUP BY CategoryID) as temp)


Bazy Danych Ł. Wąs 2021

Zapytania do wykonania na bazie northwind angielski wartość w nawisach oznacza ilość rekordów
do zwrócenia bądź konkretny rekord

Zapytanie zwracające nazwy kategorii i ilość produktów do nich przypisanych; posortować rosnąco
(9)

Zapytanie zwracające nazwę firmy, która złożyła najdroższe zamówienie (QUICK-Stop)

Podać nazwę towaru i sumaryczna wartość sprzedaży towaru w przedziale czasowym 12 do 5 lat
wstecz od aktualnej daty pobranej z aktualnej daty systemowej

You might also like