Cześć wszystkim.
Piszę do was po wczorajszym teście rekrutacyjnym na staż na analityka danych (Power BI i te sprawy).
Sprawa jest wielowymiarowa, bo i proszę o radę, i o opinię, i o pomoc Wszystkie zadania i rozwiązania moje wkleję pod główną częścią posta.
Dostałem do rozwiązania 5 zadań z sql-a do wykonania w ciągu godziny na tej stronie https://www.w3schools.com/sql/trysql.asp?filename=trysql_op_in. Patrzę na nie, wydają się w porządku. Początek zresztą idzie mi dobrze, aż do końcówki 3 zadania. Klauzula LIMIT nie chciała mi za nic działać. Straciłem jakieś 10 minut na rozwiązanie tego, nadal nic. Pod koniec znalazłem takie coś, jak klauzula TOP. Zadziałało, więc uznałem, że dodam to jako alternatywne rozwiązanie.
Zostawiłem więc to i przeszedłem do zadania 4. Tu też wydawało się wszystko dość łatwe. Problem w tym, że nie mogłem sprawdzić, czy to działa, bo z jakiegoś powodu przy wklepaniu drugiego INNER JOINA przestało wszystko działać. Znowu straciłem na tym długie minuty. Skończyło się to tym, że zrobiłem literówkę (dodatkowy średnik) i chyba nie do końca zrozumiałem to zadanie.
Na zadanie 5 nie starczyło mi czasu, by spróbować napisać podzapytanie (miałem takiego rodzaju zadania na zajęciach). Zauważyłem jednak, że klauzula TOP 4 spełnia warunki zadania i wyznacza tych dodatkowych klientów, więc zostawiłem to.
Po fakcie odkryłem, że został mi wysłany link do edytora dla silnika SQL Server, a nie jakiegoś innego (np. MySQL, który bardzo dobrze znam), którego zupełnie nie znałem. Nie wiedziałem, że tam INNER JOIN-y trzeba wstawiać w jakieś nawiasy, bo inaczej to nie zadziała...
W mailu zwrotnym napisałem, że nie byłem w stanie używać klauzuli LIMIT i wielokrotnych INNER JOIN-ów, przez co nie byłem w stanie sprawdzić, czy zadanie dobrze działa.
I teraz pytania:
- Czy jest jakaś szansa, że na podstawie tych odpowiedzi mnie nie odrzucą, ewentualnie dadzą drugą szansę? xd
- Czy pisać do nich jakiegoś dodatkowego maila z informacją o tym, że link został mi wysłany do silnika bazy danych, którego nigdy nie używałem, przez co miałem te wymienione problemy? Trzeba tutaj też dodać, że zadanie 3 było niemożliwe do wykonania, bo w SQL Server nie ma klauzuli LIMIT.
- Jak w ogóle oceniacie moje wypociny?
I teraz obiecane zadania i moje rozwiązania:
-
Wyświetl zamówienia złożone w czwartym kwartale 1996 roku.
SELECT * FROM Orders WHERE (MONTH(OrderDate) = 10 OR MONTH(OrderDate) = 11 OR MONTH(OrderDate) = 12) AND YEAR(OrderDate) = 1996;
-
Wyświetl zamówienia od klientów z Brazyli.
SELECT * FROM Orders o INNER JOIN Customers c ON o.CustomerID = c.CustomerID WHERE c.Country = 'Brazil'
-
Wyświetl nazwę klienta i liczbę zamówień dla TOP 3 klientów, którzy złożyli najwięcej
zamówień w 1996 roku (skorzystaj z klauzuli „LIMIT”).SELECT c.CustomerName, COUNT(o.OrderID) AS 'Liczba zamówień' FROM Orders o INNER JOIN Customers c ON o.CustomerID = c.CustomerID WHERE YEAR(OrderDate) = 1996 GROUP BY c.CustomerName ORDER BY 2 DESC LIMIT 3; Alternatywnie SELECT TOP 3 c.CustomerName, COUNT(o.OrderID) AS 'Liczba zamówień' FROM Orders o INNER JOIN Customers c ON o.CustomerID = c.CustomerID WHERE YEAR(OrderDate) = 1996 GROUP BY c.CustomerName ORDER BY 2 DESC
-
Wyświetl produkty i wartość zamówień złożonych w 1997 roku. Wyniki posortuj malejąco
według przychodów.SELECT p.ProductName, o.OrderID, SUM(p.Price * od.Quantity) AS Kwota FROM Products p INNER JOIN OrderDetails od ON p.ProductID = od.ProductID INNER JOIN Orders o ON od.OrderID = o.OrderID; WHERE YEAR(OrderDate) = 1997 GROUP BY p.ProductName, o.OrderID ORDER BY 3 DESC;
-
Wyświetl nazwę klienta i liczbę zamówień dla TOP 4 klientów, którzy złożyli najwięcej
zamówień w 1996 roku. Obsłuż sytuację, w której klienci mają tyle samo zamówień (wyświetl
kolejnych klientów jeżeli mają tyle samo zamówień co czwarty z kolei klient).SELECT TOP 4 c.CustomerName, COUNT(o.OrderID) AS 'Liczba zamówień' FROM Orders o INNER JOIN Customers c ON o.CustomerID = c.CustomerID WHERE YEAR(OrderDate) = 1996 GROUP BY c.CustomerName ORDER BY 2 DESC
Pozdrawiam!