Professional Documents
Culture Documents
DB, HW4 - Data Retrieval, Solutions
DB, HW4 - Data Retrieval, Solutions
1. π M.a1, N.a2, M.a3 (ρM(a1F MAX (a3) A) θ 2. a1, a2 F MAX (a3) A
))M.a1 = N.a1 ρN(π a1, a2 A
( 3. (π a1, a2 A) X )F MAX (a3) A 4. π a1, a2, a3 A
נימוק:
תשובות ,2 ,1ו – 4-ייתנו בעצם פלט זהה לטבלה המקורית A
– 4שליפה מלאה של הטבלה ,כולל המפתח הראשי – מה שמבטיח שבפלט אין כפילויות שיוסרו.
– 1כיוון ש a1-הוא המפתח הראשי ,שני הצדדים של פעולת ה JOIN-יתנו מספר רשומות זהה לטבלה המקורית,
ופעולת ה MAX -תחזיר את ערך השדה עצמו.
– 2כיון שהאגרגציה היא על מפתח על – התוצאה תהיה זהה לטבלה
תשובה 3שגוייה – הצירופים של ( )a1, a2יהיו אמנם זהים לטבלה המקורית ,אך הביטוי מימין יחזיר את ערך
המקסימום לכלל הטבלה ,ולא לכל צירוף בנפרד.
.2בטבלה ) ,Q(x, y, zהצירוף ( )x, yהוא המפתח הראשי ,כל השדות מספריים ואין ערכי .NULLמעל הטבלה
הופעלו שתי השאילתות הבאות:
-החזירה 20רשומות x F MAX (z) Q o
-החזירה 30רשומות y F MAX (z) Q
o
איזה מהבאים מגדיר נכונה את גבולות טווח מספר הרשומות הצפוי בתוצאה של:
(()π x,y Q( – )X (π y Q) )π x Q
()600 ,0 .2 ()570 ,0 .1
.4בטבלה ) A (a1, a2, a3השדה a1הוא המפתח הראשי וכל השדות מספריים .איזו מהשאילתות הבאות
כתובה בצורה תקינה ?
כלומר ,הטענה היא שב 3-מהשאילתות יש שגיאת נוסח SQLמהותית.
1. 2.
SELECT )a1, F = SUM (a3 SELECT )a1, F = a2 * SUM (a3
FROM A FROM A
WHERE F > 20 GROUP BY a1
GROUP BY a1 HAVING SUM (a3) > 20
3. 4.
SELECT a1, a2 SELECT )a1, a2, F = SUM (a3
FROM A FROM A
GROUP BY a1, a2 HAVING SUM (a2) > 20
HAVING SUM (a3) > 20 GROUP BY a1, a2
נימוק:
– 1מרכיב ה WHERE-מתייחס לשדה Fשהוא פונקציית אגרגציה
– 2שורת ה SELECT-מתייחסת לשדה הפרטני ,a2שאינו מופיע בשורת הGROUP BY -
– 3נוסח תקין .בשאילתות GROUP BYאין הכרח ששורת ה SELECT-תכלול פונקציית אגרגציה
– 4שורת ה HAVING -רשומה לפני שורת הGROUP BY -
.5נתון כי בטבלה ) W (a, b, cהצירוף ( )a, bהוא המפתח הראשי ,כל השדות מספריים ואין ערכי .NULL
בטבלה יש כעת Xרשומות ,ונתון כי השאילתה הבאה החזירה Yרשומות תוצאה.
איזה מהבאים מגדיר נכונה את טווח הערכים האפשריים של ?Y
SELECT )c, AA = COUNT (DISTINCT A), BB = COUNT (DISTINCT B
FROM W
GROUP BY c
Y≤X≤1 .2 Y=X
,Y ≥ 1ולא ניתן להגדיר את היחס בין Yלבין X .4 Y≥X
נימוק:
השדה cאינו חלק מהמפתח של הטבלה .Wאם בטבלה יש Xרשומות ,הרי שבשדה cייתכנו בין 1ל X-ערכים
שונים ,ובהתאם לכך תוצאת השאילתה תפיק בין 1ל X-רשומות
.6את איזה מהמרכיבים הבאים בשאילתת ה SELECT-משפיע באופן ברור ומובהק על גרעיניות הנתונים (
) Granularityבפלט שמפיקה שאילתה -בהנחה שהשאילתה כתובה בצורה תקנית ומפיקה פלט שאינו ריק?
חשוב :בנוסח שמובא כאן ,לשאלה זו יש יותר מתשובה אפשרית אחת! בפתרון יש לנתח כל אחת מ 6-התשובות,
ולנמק בקצרה האם היא משפיעה על גרעיניות הפלט ,או שאין לה השפעה.
1. SELECT 2. FROM
3. WHERE 4. GROUP
5. HAVING 6. ORDER
נימוק:
הגרעיניות עוסקת בשאלה עד כמה הטבלה סיכומית או פרטנית .בקורס הנוכחי אנחנו דנים בכך רק בקצרה ,אך
בקורס ההמשך "מערכות בינה עסקית" – שאלת הגרעיניות הופכת להיות מרכזית וזוכה לדיון מורחב בהרבה.
למרכיב ה FROM-יש השפעה משמעותית על כך – כיוון שמידת הסיכומיות של הפלט תושפע ישירות ממידת
הסיכומיות של טבלאות הקלט – האם הן פרטניות ,או שכבר מסוכמת מראש.
גם למרכיב ה GROUP-השפעה משמעותית – כיוון שהוא קובע על פי איזה צירוף שדות תיעשה האגרגציה.
הגרעיניות תושפע מאוד מהשאלה – האם הצירוף כולל את המפתח ,והאם יש תלויות פונקציונאליות בין השדות.
למרכיבי ה WHERE-וה – HAVING-אין השפעה על מידת הסיכומיות ,אך הם משפיעים על מספר רשומות הפלט
שיתקבלו בפועל
למרכיב ה SELECT -אין בעצם השפעה משל עצמו – כי אם השאילתה כתובה באופן תקין ,השדות שמשפיעים על
הגרעיניות נגזרים בעצם משורת ה .GROUP -לשדות שנוספים לכך – אין השפעה על גרעיניות.
מרכיב ה ORDER-מגדיר רק את סדר ההצגה ,ואינו משפיע על תוכן הפלט
בסיסי נתונים אוניברסיטת בן גוריון בנגב
פתרון תרגיל בית מס' 4 המחלקה להנדסת תעשיה וניהול
)1 I.Inspector, I.Rank )F COUNT (DISTINCT Citizen), SUM (V.Violation * I.Fine
( ( I θ* I.Inspector = V.Inspector V
לכל פקח (מזהה ודרגה) – לכמה אזרחים שונים רשם קנסות ,ומה היה סכום הקנסות הכולל ששולם
)2 W.Business, W.WorkDate F COUNT (*) > W.Limit (σV.Violation = 1 (W θ W.Business = V.Business AND
W.WorkDate = V.WorkDate ))V
לכל עסק – באילו תאריכי עבודה מספר הקנסות שניתנו עלה על מספר המבקרים המקסימלי המותר בעסק.
)5 T.TestDate FMAX (T.Result)=0 (σ Year (C.Birthday)=2000 (Cθ C.Citizen = T.Citizen ))T
באילו תאריכי בדיקה – כל האזרחים שנולדו בשנת 2000ונבדקו ,נמצאו בריאים.
בסיסי נתונים אוניברסיטת בן גוריון בנגב
פתרון תרגיל בית מס' 4 המחלקה להנדסת תעשיה וניהול
SELECT City,
E_Customers = COUNT (*),
Codes = COUNT (DISTINCT PostalCode)
FROM Customers
WHERE CompanyName LIKE '%E%'
GROUP BY City
HAVING COUNT (*) > 1
ORDER BY E_Customers DESC
: רשומות6 הפלט שמתקבל כולל
4000-עבור אילו עובדים הפער בין השכר שהם מרווחים לבין השכר שהמנהל שלהם מרוויח קטן מ .3
את פער, השם המלא והשכר של המנהל, את המזהה, השם המלא והשכר של העובד,יש להציג את המזהה
.השכר מהנמוך לגבוה
SELECT E.EmployeeID,
[Full Name] = E.FirstName + ' ' + E.LastName,
Employee_Salary = E.YearSalary,
Manager_ID = M.EmployeeID,
[Manager Name] = M.FirstName + ' ' + M.LastName,
Manager_Salary = M.YearSalary,
Salary_Gap = M.YearSalary - E.YearSalary
FROM EMPLOYEES AS E JOIN EMPLOYEES as M
ON E.ReportsTo = M.EmployeeID
WHERE M.YearSalary - E.YearSalary < 4000
ORDER BY Salary_Gap
?2007 הזמנות ברבעון הראשון של שנת3 אילו לקוחות (חברות) שיש ברשותם פקס הזמינו מעל .4
את מספר ההזמנות, את המדינה בה החברה נמצאת,) שם הלקוח (החברה,יש להציג את מזהה הלקוח
. ואת סכום דמי המשלוח להזמנות אלו,)(בסדר יורד
SELECT C.CustomerID, C.CompanyName, C.Country,
Total_Orders = COUNT (*),
Total_Freight = SUM (O.Freight)
FROM Customers AS C JOIN ORDERS as O ON C.CustomerID = O.CustomerID
WHERE C.Fax IS NOT NULL AND
YEAR (O.OrderDate) = 2007 AND Month (O.OrderDate) IN (1, 2, 3)
GROUP BY C.CustomerID, C.CompanyName, C.Country
HAVING COUNT (*) > 3
ORDER BY Total_Orders DESC
: רשומות6 הפלט שמתקבל כולל
שסכום ההזמנות הכולל שלהם, עבורם מספר היחידות במלאי נמוך ממספר היחידות המוזמנות, המוצרים5 מהם .5
?הוא הגבוה ביותר
, את הפער בין מספר היחידות המוזמנות למספר היחידות במלאי, שם המוצר,יש להציג את מזהה המוצר
ואת סכום ההזמנות הכולל,את מספר ההזמנות שבוצעו עבורם
את הסכום ההזמנות הכולל יש לחשב לפי המחיר ליחידה שנקבע בעת ההזמנה
? לכל עובד שמועסק כאיש מכירות – לאילו לקוחות (חברות) שנמצאים בגרמניה הוא מעולם לא ביצע בהזמנה .6
"Sales" ) שמתחילה במילהTitle( איש מכירות – עובד בעל משרה
שם) עבורם מעולם, משרה) ואת פרטי הלקוחות (מזהה, שם מלא,יש להציג את פרטי איש המכירות (מזהה
לא ביצע הזמנה
EXCEPT