Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 6

‫המסלול האקדמי המכללה למינהל‬

‫בית הספר למנהל עסקים‬

‫מבחן בקורס‪ :‬אנליסט ‪SQL‬‬


‫‪ -2019‬סמסטר‪ :‬ב' מועד‪ :‬א' (מותאם ‪)2020‬‬
‫שאלה מספר ‪ 14( 1‬נק')‬
‫הציגו את שם הקטגוריה (‪ ,)CategoryName‬כמות ההזמנות בהן נמכרו מוצרים המשתייכים לקטגוריה (בשדה בשם‬
‫‪ )CategoryOrders‬והפדיון מהמכירות בכל קטגוריה (בשדה בשם‪) Revenue‬‬
‫יש להציג תוצאות‪ ,‬רק עבור מוצרים שאינם שייכים לקטגורית ‪ PRODUCE‬ומכירות בהן לא ניתנה הנחה‪.‬‬
‫התוצאות יוצגו בסדר יורד (מהגבוה לנמוך) של כמות המוצרים שהוזמנו בכל קטגוריה‬

‫‪SELECT C.CategoryName, COUNT(DISTINCT OD.OrderID) AS 'Category Orders',‬‬


‫‪SUM(OD.UnitPrice*OD.Quantity) as Revenue‬‬

‫‪FROM‬‬ ‫‪Categories AS C INNER JOIN Products AS P‬‬


‫‪ON P.CategoryID=C.CategoryID‬‬
‫‪INNER JOIN [Order Details] AS OD‬‬
‫‪ON OD.ProductID=P.ProductID‬‬
‫'‪WHERE OD.Discount=0 AND C.CategoryName NOT LIKE 'PRODUCE‬‬
‫‪GROUP BY C.CategoryID, C.CategoryName‬‬

‫שאלה מספר ‪ 14( 2‬נק')‬


‫הציגו את שמות כל המוצרים‪ ,‬שמחירם (מחיר המחירון שלהם) גבוה ממחיר המוצר ‪ Pavlova‬והכמות שלהם במלאי‬
‫(‪ )UnitInStock‬גבוהה בלפחות ‪ ,10‬מממוצע הכמות במלאי של כל המוצרים‬
‫מיינו את התוצאות לפי שם מוצר בסדר עולה‬

‫‪Select P.ProductName‬‬
‫‪from‬‬ ‫‪Categories C Inner join Products P‬‬
‫‪on C.CategoryID=P.CategoryID‬‬

‫‪where‬‬ ‫‪P.UnitPrice > (select UnitPrice‬‬


‫)'‪from Products where ProductName = 'Pavlova‬‬
‫)‪and P.UnitsInStock > 10 + (select avg (UnitsInStock‬‬
‫)‪from Products‬‬

‫‪order by P.ProductName‬‬

‫שאלה מספר ‪ 13( 3‬נק')‬


‫הציגו עבור כל העובדים בחברה את קוד העובד‪ ,‬שמו המלא בשדה אחד (בשדה בשם ‪ ,)FullName‬וותק בשנים‬
‫(בשדה בשם ‪ ,)Seniority‬כמות ההזמנות בהן טיפל ואת אחוז כמות ההזמנות שלו מכלל כמות ההזמנות שהוזמנו‬
‫בחברה‬
‫כל התוצאות (כמות הזמנות לעובד וכמות הזמנות בכלל החברה) תתייחסנה ל הזמנות שבוצעו בשנת ‪ 1996‬בלבד‬
‫הערה‪ :‬כמות הזמנות סופרת כמה הזמנות היו‬
SELECT E.EmployeeID, E.FirstName+' '+E.LastName,
DATEDIFF(YEAR, E.HireDate, GETDATE()) AS SENIORITY,
COUNT(*) AS CountOrders,
100*COUNT(*)/(SELECT COUNT(*)
FROM Orders AS O
WHERE YEAR(O.OrderDate)=1996) AS OredersPercent
FROM Employees AS E LEFT JOIN Orders AS O
ON O.EmployeeID=E.EmployeeID
WHERE YEAR(O.OrderDate)=1996
GROUP BY E.EmployeeID, E.FirstName+' '+E.LastName, DATEDIFF(YEAR, E.HireDate, GETDATE())

)'‫ נק‬14( 4 ‫שאלה מספר‬


.1996 ‫ שכלל לא הזמינו הזמנות בשנת‬F ‫ או‬,P, Z -‫הציגו לקוחות (שם חברה) מצרפת או מספרד ששמם מתחיל ב‬

SELECT DISTINCT C.CompanyName


FROM Customers AS C LEFT JOIN ORDERS AS O
on C.CustomerID=O.CustomerID
where C.Country in ('France','Spain') AND
C.CompanyName like '[FZP]%' AND
C.CustomerID NOT IN (
SELECT DISTINCT O.CustomerID
FROM ORDERS AS O
WHERE YEAR(O.OrderDate)=1996)

‫או פתרון מסובך יותר‬...

SELECT C.CompanyName
FROM Customers AS C LEFT JOIN (
SELECT DISTINCT O.CustomerID
FROM ORDERS AS O
WHERE YEAR(O.OrderDate)=1996) AS O
on C.CustomerID=O.CustomerID
WHERE C.Country in ('France','Spain')
and C.CompanyName like '[FZP]%'
and O.CustomerID is null
)'‫ נק‬14( 5 ‫שאלה מספר‬
‫ יש להציג למנהל הכנס דוח הכולל נתונים לגבי העובדים‬,‫ שייערך בלונדון‬,‫במסגרת כנס בו תשתתף החברה‬
‫והספקים של הארגון הגרים בלונדון‬
:‫הדוח יוצג במבנה הבא‬
Name Address Data By Type Type
‫שם‬/‫שם מלא של העובד‬ ‫ספק‬/‫כתובת עובד‬ ( ‫ירשם בהתאם להקשר‬ ‫גיל העובד‬
‫חברת הספק‬ )Employee/Supplier ‫ריק אצל הספק‬

‫ ואח"כ את העובדים ממוינים לפי סדר‬,‫המנהל מבקש לראות קודם את הספקים ממוינים לפי סדר אלפביתי עולה‬
‫אלפביתי עולה‬
SELECT E.FirstName+' '+E.LastName AS 'Name',
E.Address AS 'Address', 'Employee' AS 'Data By Type',
DATEDIFF(YEAR, e.BirthDate, GETDATE()) AS 'Type'
2
FROM Employees AS E
WHERE E.City LIKE 'LONDON'

UNION

SELECT S.CompanyName, S.Address, 'Supplier', ''


FROM Suppliers AS S
WHERE S.City LIKE 'LONDON'
ORDER BY 'Data By Type' DESC, 'Name'

)'‫ נק‬14( 7 ‫שאלה מספר‬


( ‫ שם המוצר‬:‫ הציגו את‬,)UnitInStock( ‫) עם הכמות המקסימלית במלאי‬ProductName( ‫עבור המוצר‬
))Quantity ‫ סך הכמויות המוזמנות ממנו‬,)‫ כמות ההזמנות (כמות הפעמים שהמוצר הופיע בהזמנות‬,) ProductName
‫וסך הפדיון‬

SELECT P.ProductName, COUNT(od.orderID) AS CountOrders,


SUM(OD.Quantity) AS SumQuantity,
SUM(OD.UnitPrice*OD.Quantity) AS SUMRevenue
FROM Products AS P Left JOIN [Order Details] AS OD
ON OD.ProductID=P.ProductID
WHERE P.UnitsInStock=(SELECT MAX(P.UnitsInStock)
FROM Products AS P )
GROUP BY P.ProductID, P.ProductName

)'‫ נק‬17( ‫ שאלות והיגדים‬- '‫חלק ב‬


10072019 ‫ בשם מבחן אנליסט היגדים‬Word ‫עליכם לענות על חלק ב' בקובץ‬
‫ עליכם לציין האם הוא נכון או שאינו נכון ולהסביר בפירוט את תשובתכם‬,‫יש לענות על השאלות ובכל היגד‬
)‫(ניקוד יינתן רק על הסבר נכון ולא על עצם ציון נכונות ההיגד‬

)'‫ נק‬4( 1 ‫שאלה מספר‬


:‫בהינתן הטבלאות הבאות‬

3
‫‪:‬והשאילתה‬

‫'‪SELECT E.Country, SUM(E.Salary) AS 'SumSalaries‬‬


‫‪FROM Employees AS E INNER JOIN Orders AS O‬‬
‫‪On O.EmployeeID=E.EmployeeID‬‬
‫‪GROUP BY E.Country‬‬

‫א‪ .‬כתבו את תוצאות השאילתה בצורת טבלת תוצאות‬


‫‪Coun- Sum-‬‬
‫‪try‬‬ ‫‪Salaries‬‬

‫‪USA‬‬ ‫‪4,500‬‬

‫התוצאות‬ ‫ב‪ .‬רשמו את‬


‫הרצויות והסבירו מדוע לא התקבלו‬
‫‪Coun- Sum-‬‬
‫‪try‬‬ ‫‪Salaries‬‬
‫‪USA‬‬ ‫‪3,500‬‬
‫‪UK‬‬ ‫‪14,000‬‬

‫התוצאות לא התקבלו בשל נוכחות טבלת ‪Orders‬‬

‫שאלה מספר ‪ 3( 2‬נק')‬


‫בהינתן השאילתה הבאה‪:‬‬

‫הסבירו מה יוצג בתוצאות שאילתה זו‬


‫עבור כל הזמנה ייספרו מספר שורות ההזמנה ‪ -‬המוצרים השונים זה מזה בהזמנה‬

‫שאלה מספר ‪ 4( 3‬נק')‬


‫במערכת המידע של בית חולים גדול במרכז הארץ‪ ,‬מופיעות הטבלאות הבאות‪:‬‬
‫טבלת רופאים‪ ,‬בה יש נתונים לגבי ‪ 100‬רופאים המבצעים ניתוחים בבית החולים‪ ,‬טבלת חולים שעומדים בפני‬
‫ניתוח ובה נתונים אודות ‪ 2,500‬חולים‪ ,‬וטבלה נוספת בה מוצגים השיבוצים של הניתוחים המבוצעים בכל יום‬
‫(רופא‪ ,‬חולה‪ ,‬חדר שעה ותאריך)‪ .‬בית החולים מבצע כמה ניתוחים בכל יום‬
‫‪4‬‬
‫אילו טבלאות יופיעו בשאילתה בה ירצו להציג את כמות הניתוחים המבוצעת על ידי כל רופא בבית החולים?‬ ‫א‪.‬‬

‫אם ירצו להציג לפי שם רופא‪ :‬נזדקק לטבלת הרופאים ולטבלת השיבוצים‬

‫מהן הטבלאות ומהם התנאים שיופיעו ב שאילתה בה נרצה לדעת את שמות החולים שנותחו בחודש מאי?‬ ‫ב‪.‬‬
‫הטבלאות‪ :‬טבלת שיבוצים וטבלת חולים‪ .‬התנאי להצגת שמות יהיה שחודש תאריך הניתוח יהיה ‪5‬‬

‫שאלה מספר ‪ 3( 4‬נק')‬


‫נתונה טבלת המכירות (‪ )Sales‬וקטעי הקוד הבאים‪:‬‬

‫‪5‬‬
‫הציגו את התוצאה שתתקבל בכל אחת משתי השאילתות‬ ‫א‪.‬‬
‫שאילתה עליונה‪:‬‬

‫גוגונזולה‬ ‫‪1000‬‬

‫טופו‬ ‫‪500‬‬

‫שאילתה תחתונה‪:‬‬

‫גוגונזולה‬ ‫‪1200‬‬

‫טופו‬ ‫‪800‬‬

‫לחם‬ ‫‪390‬‬

‫הסבירו בקצרה את מהות ההבדל‬ ‫ב‪.‬‬


‫בשאילתה עליונה הסינון הוא למוצר במכירה (פדיון שורת מכירה מעל ‪)200‬‬
‫בשאילתה תחתונה הסינון הוא על סך פדיון מסוכם למוצר (סך פדיון מעל ‪)200‬‬

‫שאלה מספר ‪ 3( 5‬נק')‬


‫בשאילתה בה נרצה להציג את סך התשלומים ששילם כל לקוח‪ ,‬יש להעלות את טבלת הלקוחות‪ ,‬ההזמנות‬
‫ופרטי ההזמנה ולסכם את הפדיון ועלות ההובלה‬
‫חוו דעתכם על הטענה שלעיל ונמקו‬

‫רכיב חישוב סך עלויות ההובלה יהיה שגוי (כל עלות הובלה תוכפל במספר המוצרים באותה הזמנה) לצורך‬
‫חישוב נכון יהיה צורך לחשב בנפרד את עלות הובלה בתת שאילתה ב‪( From-‬ובנפרד סך פדיון) ולחבר בין‬
‫התוצאות‬

‫!בהצלחה‬

‫‪6‬‬

You might also like