יום רביעי, 14 ביוני 2017

מבחן שליש ג' – בסיסי נתונים Sql Server



מבחן שליש ג' – בסיסי נתונים Sql Server



הנחיות למבחן

1.     מותר להשתמש בכל חומר פתוח לרבות חיפוש באינטרנט.
2.     המבחן יתבצע על גבי מחשב מול Sql Server
3.     אסור לשתף פעולה בין תלמידים.
4.     המבחן יתבצע על בסיס הנתונים CRM

חלק ראשון – יש לפתור  4 שאלות מתוך 5 שאלות

1.     (10 נקודות)
נתונה טבלת לקוחות Customers)) , יש להציג ממנה את כל הנתונים עבור כל הלקוחות
שגילם הוא בין 16 שנים ל 50  שנים.

2.     (10 נקודות)
נתונה טבלת מדינות (Country), יש להציג ממנה את השדות הבאים:
מספר מדינה (CountryID) בתור טקסט : "The Country Number is : xxx"
אורך התוים של שם המדינה(CountryName) בתור טקסט: "The Country Len is: xxx"

3.     (10 נקודות)
נתונה טבלת  קישור בין לקוחות וכתובות(CustomerLinkAddress) יש להציג ממנה את השדות הבאים:
CustomerLinkAddressID + 2.5 ולהשתמש בפונקציית Ceiling כדי לעגל כלפי מעלה.
AddressDetailsID * 0.23 ולהשתמש בפונקציית  Floor כדי לעגל כלפי מטה.

4.     (10 נקודות)
נתונה טבלת ערים (City) , יש להציג ממנה את השדות הבאים:
מספר עיר (CityID)
עמודה חדשה שהשם שלה יהיה CityManipulation מורכבת מהאות הראשונה של שם העיר והאות האחרונה של שם העיר.

5.     (10 נקודות)
נתונה טבלת ערים(City)ת יש להציג ממנה את השדות הבאים:
מספר עיר(CityID)
עמודה חדשה שתיקרא 1AsciiSign שתכיל את מספר ה ASCII של התו הראשון בעמודה CitySign
עמודה חדשה שתיקרא 2AsciiSign שתכיל את מספר ה ASCII של התו השני בעמודה CitySign


חלק שני – יש לפתור 3 שאלות מתוך 6  כל שאלה 20 נקודות

6.     (20 נקודות)
נתונה טבלת  פרטי כתובות (AddressDetails) . יש להציג את העמודות הבאות:
AddressDetailsID
AddressTypeName בעזרת Join עם טבלת AddressType
CountryName  בעזרת  Join עם טבלת Country
CityName בעזרת  Join  עם טבלת  City
StreetName  בעזרת  Join עם טבלת Streets

7.     (20 נקודות)
נתונה טבלת קשרי לקוחות ומחלקות. (CustomerLinkDepartment)
יש להציג את שמות כל המחלקות DepartmentName על ידי  Join לטבלת  Department
ולהציג בעמודה נוספת כמה לקוחות מקושרים לכל מחלקה.
(רמז: Group By + Count)

8.     (20 נקודות)
9.     באיזה סדר מפעיל ה SQL  את פעולות השאילתא? כתוב מספר ליד כל פעולה שמציין את המיקום שלה בסדר הפעולות. (הכוונה היא לאן הולך המנוע כשהוא מפענח שאילתא. מי קודם למי...)
      SELECT
                           FROM        
      WHERE
GROUP BY   
HAVING      
ORDER BY    

(20 נקודות)
10.  הצג מטבלת לקוחות (Customers) את השם הפרטי ושם המשפחה בעמודה אחת באותיות גדולות בלבד, עבור כל הלקוחות ששמם הפרטי מתחיל באות 'E' או באות 'Y '    אבל מותר לך להשתמש בפונקציית SUBSTRING   בלבד בתוך ה WHERE

(20 נקודות.)
11.  יש להציג  מטבלת לקוחות (Customers) את השם הפרטי ואת שם המשפחה, עבור כל הלקוחות שהם בני 18 לפחות, והם גרים בעיר 'Tel Aviv' או בעיר 'Bnei Brak' או 'Paris'






מבחן שליש א' – בסיסי נתונים  פתרונות
שאלה 1
SELECT * FRO
M Customers WHERE
DateDiff(yy,BirthDate,GetDate()) Between 18 and 50

שאלה 2
SELECT 'The Country Number is : ' + Cast(CountryID as Varchar(20)) ,
               'The country Len is :' + Cast(Len(CountryName))
FROM Country

שאלה 3
Select Ceiling(CustomerLinkAddressID + 2.5) as Col1,
          Floor(AddresDetyailsID*0.23) as Col 2
   FROM CustomerLinkAddress
שאלה 4
SELECT CityID , Left(CityName,1) + Right(CityName,1) as CityManipulation
FROM City
שאלה 5
SELECT CityID,   Ascii(SubString(CityName,1,1))  +  cast(Ascii(Substring(CityName,2,1)) as varchar(2))
From City



-להורדת הקובץ docx-










פתרונות כפי שהגשתי:
--1
select *
from customers
where    (datediff(yy,birthdate,getdate())) between 16 and 50

--2
select 'the Country number is = ' + cast(countryid as char(10)) as countryid,
'The Country Len is = ' + cast(len(countryname) as char(10)) as [LenOfCountryNmae]
from country

--3
select CEILING(CustomerLinkAddressID + 2.5) as CustomerLinkAddressID,
Floor (AddressDetailsID * 0.23) as AddressDetailsID
from CustomerLinkAddress

--4
select cityid,substring(cityname,1,1)+' '+ substring(cityname,len(cityname),1) as CityManipulation
from city

--5
select cityID, ASCII(substring(citySign,1,1)) as AsciiSign1,
ASCII(substring(citySign,2,1)) as AsciiSign2
from city





--6
select d.AddressDetailsID,t.AddressTypeName ,c.CountryName,ci.CityName , s.StreetName   
from AddressDetails d join AddressType t
on d.AddressTypeID = t.AddressTypeID
join Country c
on c.CountryID = d.CountryID
join city ci
on ci.CityID = d.CityID
join Streets s
on s.StreetID = d.StreetID


--7
select d.DepartmentName ,count(CustomerLinkDepartmentID) as [count]
from CustomerLinkDepartment c join Department d
on d.DepartmentID = c.DepartmentID
group by d.Departmentname


--9
1 FROM
2 WHERE
3 GROUP BY
4 HAVING
5 SELECT
6 ORDER BY








יתכן שהפתרונות לא נכונים~

אין תגובות:

הוסף רשומת תגובה