You are on page 1of 5

‫שנה"ל‪ :‬תשפ"ב‬

‫סמסטר‪ :‬ב'‬
‫מועד‪ :‬א'‬
‫תאריך‪25.7.2022 :‬‬
‫יום‪ :‬ראשון‬
‫שעה‪14:00 :‬‬
‫זהות‬ ‫תעודת‬
‫‪ 2.5‬שעות‬ ‫משך הבחינה‪:‬‬

‫‪3‬‬ ‫‪1‬‬ ‫‪8‬‬ ‫‪4‬‬ ‫‪1‬‬ ‫‪6‬‬ ‫‪5‬‬ ‫‪9‬‬ ‫‪1‬‬

‫בחינה בקורס אנליסט ‪SQL‬‬


‫שמות המרצים‪:‬‬
‫ד"ר אבי ישראל‪ ,‬ד"ר נוה אשכנזי‬

‫הנחיות‪:‬‬

‫הבחינה כוללת ‪ 10‬שאלות‪ 6 :‬שאלות מעשיות שמשקלן ‪ 76%‬ו‪ 4-‬שאלות הבנה שמשקלן ‪.24%‬‬ ‫‪‬‬
‫לצד כל שאלה מופיע הניקוד עליה (בשאלות שכוללות מספר סעיפים הניקוד מופיע לצד כל סעיף)‬ ‫‪‬‬
‫המענה לבחינה יתבצע על גבי קבצי ‪ Word‬בלבד אשר יוגשו בתום הבחינה לתיבת הגשה ייעודית‬ ‫‪‬‬
‫שנפתחה לצורך כך ב‪ MAMA-‬של הקורס‬
‫קבצי ה‪ Word-‬שיוגשו יכללו‪:‬‬ ‫‪‬‬
‫במענה לחלק א'‪ :‬בשאלות המעשיות‪ :‬קוד השאילתה‬ ‫‪o‬‬
‫במענה לחלק ב'‪ :‬שאלות ההבנה‪ :‬מענה מילולי‬ ‫‪o‬‬
‫הבחינה כוללת ‪ 7‬עמודים (כולל עמוד זה)‬ ‫‪‬‬

‫ציון הבחינה‪________ :‬‬


‫תאריך הבדיקה‪________ :‬‬
‫חתימת הבודק‪/‬ת‪________ :‬‬
)'‫ נק‬76( ‫ שאלות מעשיות‬:'‫חלק א‬

---- OUES 1
SELECT S.CompanyName,
MAX(OD.Quantity*OD.UnitPrice) AS 'SumRevenue',
COUNT(distinct OD.OrderID) AS 'CountOrders'
FROM Shippers AS S
INNER JOIN Orders AS O ON S.ShipperID=O.ShipVia
INNER JOIN [Order Details] AS OD ON O.OrderID=OD.OrderID
WHERE YEAR(O.OrderDate) = 1996 AND (DATEPART(QUARTER,O.OrderDate)=1 OR
MONTH(O.OrderDate) IN (7,8))
GROUP BY S.ShipperID, S.CompanyName
HAVING MAX(OD.Quantity*OD.UnitPrice) > (SELECT AVG(DISTINCT OD.Quantity*OD.UnitPrice)

---- OUES 2

SELECT E.FirstName, E.BirthDate, 'Employee' AS 'INFO'


FROM Employees AS E
WHERE E.BirthDate LIKE ( SELECT MIN(E.BirthDate)
FROM Employees AS E )
UNION

SELECT E.FirstName, E.BirthDate, 'Manager' AS 'INFO'


FROM Employees AS E
WHERE E.EmployeeID IN ( SELECT distinct E.ReportsTo
FROM Employees AS E
WHERE E.ReportsTo is not null )
GROUP BY E.EmployeeID, E.FirstName, E.BirthDate

ORDER BY 'INFO' ASC

----- ‫להתעלם‬
-- ‫פונקציות עזר להכנה‬
--- ‫העובד המבוגר ביותר‬
SELECT MIN(E.BirthDate)
FROM Employees AS E

-- ‫עובדים שהם גם מנהלים‬


( SELECT distinct E.ReportsTo
FROM Employees AS E
WHERE E.ReportsTo is not null )
---- OUES 3
SELECT C.CustomerID, C.CompanyName, C.ContactName,
COUNT(O.OrderID) AS 'DistinctOrders',
COUNT(DISTINCT OD.Quantity) AS 'DistinctQuantity',
SUM(OD.Quantity*OD.UnitPrice) AS 'SUMRevenue'
FROM Customers AS C
LEFT JOIN Orders AS O ON C.CustomerID=O.CustomerID
INNER JOIN [Order Details] AS OD ON O.OrderID=OD.OrderID
WHERE FAX IS NULL AND REGION IS NULL
GROUP BY C.CustomerID, C.CompanyName, C.ContactName

--- ‫ לקוחות עם נול‬11 ‫יש סהכ‬


--- ‫כמות מוצרים ייחודים שרכש כל לקוח‬
SELECT COUNT (DISTINCT O.OrderID)
FROM Customers AS C
LEFT JOIN Orders AS O ON C.CustomerID=O.CustomerID
INNER JOIN [Order Details] AS OD ON O.OrderID=OD.OrderID
WHERE FAX IS NULL AND REGION IS NULL

---- OUES 4
SELECT O.OrderDate,
YEAR(O.OrderDate) 'Year',
DATEPART(QUARTER, O.OrderDate) AS 'Quarter',
AVG(OD.Quantity*OD.UnitPrice) AS 'AvgRevenue'
FROM Orders AS O INNER JOIN [Order Details] AS OD
ON O.OrderID=OD.OrderID
WHERE OD.Quantity < (SELECT (COUNT(O.OrderID)/1)
FROM Orders AS O
WHERE O.CustomerID LIKE 'QUICK' )

GROUP BY O.OrderDate, YEAR(O.OrderDate), DATEPART(QUARTER, O.OrderDate)

---- OUES 5
SELECT E.FirstName + '' + E.LastName AS 'FullName',
COUNT(O.OrderID) AS 'NumOrders',
MAX(OD.Quantity) AS 'MaxQuantity'
FROM Employees AS E
INNER JOIN Orders AS O ON E.EmployeeID=O.EmployeeID
INNER JOIN [Order Details] AS OD ON O.OrderID=OD.OrderID
INNER JOIN Products AS P ON OD.ProductID=P.ProductID
WHERE DATEPART(QUARTER,O.OrderDate) IN (1,4) AND P.QuantityPerUnit IN ('boxes','bottle')
GROUP BY E.EmployeeID, E.FirstName, E.LastName
HAVING AVG(P.UnitPrice) > 30

ORDER BY 'FullName' ASC


)'‫ נק‬24( ‫ שאלות הבנה‬:'‫חלק ב‬

)'‫ נק‬6( 7 ‫שאלה‬


‫אפשרי להוסיף רק את עלות ההובלה המקסימלית‬

SELECT C.CompanyName, C.City, O.OrderDate,


MAX(O.Freight) AS 'MaxFreight',
MIN(O.Freight) AS 'MinFreight'
FROM Customers AS C
INNER JOIN Orders AS O ON C.CustomerID=O.CustomerID
'WHERE C.Country LIKE 'GERMANY

‫ יש שתי‬.‫ ונצטרך להוסיף מעבר לסלקט‬GROUP BY ‫ השאילתא תיתן שגיאה כי צריך להוסיף‬,‫לא‬ .‫א‬
.‫פונקציות סטטיסטיות! חייבים גרופ ביי‬
.‫ של השנה הראשונה שביצעו בה הלקוחות הזמנה כלשהי‬WHERE‫ נצטרך להוסיף תת שאילתא ב‬,‫לא‬ .‫ב‬

)'‫ נק‬6( 8 ‫שאלה‬

Category name Count sum


Jeans 2 4200
T shirts null Null
dress 1 400
skirt 1 9240
Accecories null null
‫שאלה ‪ 6( 9‬נק')‬
‫הטבאלאות שיופיעו בשאילתה הן‪ :‬טבלת חולים וטיפולים‪.‬‬
‫כמות הרשומות‪ :‬יש סהכ ‪ 2500‬חולים‪ ,‬וכל חולה עבר לפחות טיפול אחד‪ .‬יכולות להיות ‪2500‬‬

‫שאלה ‪ 6( 10‬נק')‬
‫היא רצתה לחשב את הסה"כ בונוס של העובדים‪ ,‬ובפועל בטבלה של התשלומים לעובדים אין את כל‬ ‫‪-‬‬
‫העובדים (חסרים עובדים בקוד‪ )160,180,200 ,120 :‬והיא בפועל מחשבת את הסכום של כולם וזה‬
‫לא תקין‪.‬‬
‫צריך להוסיף גרופ ביי לא תקין כשיש פונקצית ‪SUM‬‬ ‫‪-‬‬

You might also like