SQL Server – Đáp án bài tập CSDL – https://final-blade.com

Đáp án bài tập CSDLBài viết này update những đáp án bài tập Cơ Sở Dữ Liệu. Lưu ý, việc sử dụng bài giải sẽ là con dao 2 lưỡi. Chúng ta cần xem xét trước khi xem đáp án. Bạn hoàn toàn có thể tìm hiểu thêm lời giải của mình để chắc như đinh là bạn có cùng đáp án. Qua đó, bạn sẽ tự tin hơn với những quyết định hành động của bản thân. Nhưng nếu bạn quá lạm dụng, chúng sẽ làm bạn ỷ lại, giết chết sự phát minh sáng tạo và năng lực xử lý yếu tố .
Lưu ý, có nhiều lời giải cho một bài toán. Nên, nếu câu truy vấn của bạn và của mình có độc lạ, hay kiểm tra thử tác dụng của chúng. Trong một số ít lời giải, mình sẽ đổi khác một xíu, để lồng ghép cái gì đó vào. Các bạn hãy chú ý quan tâm .
1, Liệt kê những nhân viên cấp dưới của shop .

12

SELECTCONCAT(FirstName,’ ‘,LastName)ASFullName,Title

FROMEmployee;

2, Tìm những nhân viên cấp dưới tên có chứa tối thiểu 1 chữ ‘ a ’ .

123

SELECTCONCAT(FirstName,’ ‘,LastName)ASFullName,Title

FROMEmployee

WHEREFirstNameLIKE’ % a % ‘;

3, Liệt kê tổng thể thể loại ( genre ) – sắp xếp theo tên từ A -> Z .

123

SELECT*

FROMGenre

ORDERBYName;

4, Đếm số lượng thể loại .

12

SELECTCOUNT(GenreId)ASNoG

FROMGenre;

5, Liệt kê những track theo từng nhu yếu .

1234567891011121314151617181920212223

— Album id = 1

SELECT*

FROMTrack

WHEREAlbumId=1;

— Thời lượng lớn hơn 250.000 milliseconds

SELECT*

FROMTrack

WHEREMilliseconds>250000;

— Được sáng tác bởi tác giả có tên Smith

SELECT*

FROMTrack

WHEREComposerLIKE’ % Smith % ‘;

— Có định dạng ( Media Type ) là ‘ MPEG audio file ‘

SELECT*

FROMTrackINNERJOINMediaType

ONTrack.MediaTypeId=MediaType.MediaTypeId

WHEREMediaType.Name=’ MPEG audio file ‘;

6, Liệt kê những thành phố Open trong bảng người mua ( customers ) .

123

SELECTDISTINCTCity

FROMCustomer

ORDERBYCity;

7, Liệt kê 10 hóa đơn có giá trị cao nhất .

123

SELECTTOP(10)*

FROMInvoice

ORDERBYTotalDESC;

8, Truy vấn hóa đơn thứ 100 ( sắp xếp theo ngày ) .

12345

SELECT*

FROMInvoice

ORDERBYInvoiceDate

OFFSET99ROWS

FETCHFIRST1ROWONLY;

9, Liệt kê những bài hát thuộc một trong hai album : ‘ Supernatural ’, ‘ Use Your Illusion I ’ .

12345

SELECT*

FROMTrackINNERJOINAlbum

ONTrack.AlbumId=Album.AlbumId

WHEREAlbum.Title=’ Supernatural ‘

ORAlbum.Title=’ Use Your Illusion I ‘;

10, Liệt kê những hóa đơn trong tháng 2 năm 2011 .

123

SELECT*

FROMInvoice

WHEREInvoiceDateBETWEEN’ 2011 – 02-01 ‘AND’ 2011 – 02-28 ‘;

11, Xem chi tiết cụ thể hóa đơn số 47 .

123

SELECT*

FROMInvoiceLine

WHEREInvoiceId=47;

12, Liệt kê những bài hát thuộc thể loại ‘ Jazz ’, ‘ Blues ’ và ‘ Pops ’ .

1234

SELECT*

FROMTrackINNERJOINGenre

ONTrack.GenreId=Genre.GenreId

WHEREGenre.NameIN(‘ Jazz ‘,’ Blues ‘,’ Pops ‘);

13, Liệt kê những bài hát không xác lập tác giả .

123

SELECT*

FROMTrack

WHEREComposerISNULL;

14, Đếm số lượng bài hát trong Album có id = 1 .

1234

SELECTAlbumId,COUNT(TrackId)ASTrack_no

FROMTrack

GROUPBYAlbumId

HAVINGAlbumId=10;

15, Liệt kê những Album có từ 18 đến 20 bài hát, sắp xếp theo thứ tự AlbumId tăng dần .

12345

SELECTAlbumId,COUNT(TrackId)

FROMTrack

GROUPBYAlbumId

HAVINGCOUNT(TrackId)BETWEEN18AND20

ORDERBYAlbumId;

16, Liệt kê toàn bộ những người mua, được những nhân viên cấp dưới có mã PostalCode khởi đầu bằng ‘ T2P ’ .

1234567

SELECTCustomerId,CONCAT(FirstName,’ ‘,LastName)ASCustomer_Name

FROMCustomer

WHERESupportRepIdIN(

SELECTEmployeeId

FROMEmployee

WHEREPostalCodeLIKE’ T2P % ‘

);

17, Tính dung tích trung bình của mỗi Album .

123456

SELECTAVG(MyAlbum.Size)

FROM(

SELECTSUM(CAST(BytesASBIGINT))ASSize

FROMTrack

GROUPBYAlbumId

)ASMyAlbum;

18, Liệt kê Id, tiêu đề và số bài hát trong mỗi Album. Sắp xếp theo số lượng bài hát giảm dần .

12345678

SELECTAlbumId,Title,

(

SELECTCOUNT(TrackId)

FROMTrack

WHERETrack.AlbumId=Album.AlbumId

)ASTrack_Count

FROMAlbum

ORDERBYTrack_CountDESC;

19, Liệt kê CustomerId, FirstName, LastName và Country của những người mua .

12345678910111213141516

–KháchhàngkhôngởUSA

SELECTCustomerId,

CONCAT(FirstName,’ ‘,LastName)AS’ FullName ‘,

Country

FROMCustomer

WHERECountry< >‘ USA ‘

–KháchhàngởBrazil

SELECTCustomerId,

CONCAT(FirstName,’ ‘,LastName)AS’ FullName ‘,

Country

FROMCustomer

WHERECountry=’ Brazil ‘

20, Truy vấn thông tin InvoiceId, FirstName, LastName, InvoiceDate và Total những hóa đơn của người mua tại Brazil. Sắp xếp hiệu quả theo thứ tự giảm dần giá trị hóa đơn .

123456789

SELECT

I.InvoiceId,

CONCAT(C.FirstName,’ ‘,C.LastName)AS’ FullName ‘,

I.InvoiceDate,

I.Total

FROMInvoiceASIINNERJOINCustomerASC

ONI.CustomerId=C.CustomerId

WHEREC.Country=’ Brazil ‘

ORDERBYI.TotalDESC

21, Liệt kê những nhân viên cấp dưới kinh doanh thương mại .

123

SELECTCONCAT(FirstName,’ ‘,LastName)AS’ FullName ‘

FROMEmployee

WHERETitleLIKE’ % Sale % ‘

22, Tính tổng giá trị hóa đơn trong năm 2009, 2010, 2011 .

123456

SELECT

YEAR(InvoiceDate)ASInvoiceYear,

SUM(Total)ASTotal

FROMInvoice

WHEREYEAR(InvoiceDate)IN(2009,2010,2011)

GROUPBYYEAR(InvoiceDate)

23, Đếm số lượng items trong hóa đơn có id = 37 .

123

SELECTCOUNT(*)

FROMInvoiceLine

WHEREInvoiceId=37;

24, Đếm số lượng items của từng hóa đơn. Sắp xếp theo số lượng item giảm dần .

1234

SELECTInvoiceId,COUNT(*)ASItems

FROMInvoiceLine

GROUPBYInvoiceId

ORDERBYCOUNT(*)DESC

25, Liệt kê tên vương quốc, số lượng hóa đơn của vương quốc tương ứng > 20 hóa đơn. Sắp xếp theo thứ tự tăng dần số lượng hóa đơn .

12345

SELECTBillingCountry,COUNT(*)ASInvoice_No

FROMInvoice

GROUPBYBillingCountry

HAVINGCOUNT(*)>20

ORDERBYCOUNT(*)

26, Liệt kê tên Playlist và số lượng bài hát trong từng playlist

1234

SELECTPlaylist.Name,COUNT(PlaylistTrack.TrackId)ASTrack_No

FROMPlaylistINNERJOINPlaylistTrack

ONPlaylist.PlaylistId=PlaylistTrack.PlaylistId

GROUPBYPlaylist.Name

27, Truy vấn thông tin nhân viên cấp dưới kinh doanh thương mại có lệch giá lớn nhất vào năm 2010 .

123456

SELECTTOP(1)E.EmployeeId,SUM(I.Total)ASSales

FROMEmployeeASE

INNERJOINCustomerASCONE.EmployeeId=C.SupportRepId

INNERJOINInvoiceASIONC.CustomerId=I.CustomerId

WHEREYEAR(I.InvoiceDate)

=2010

GROUPBYE.EmployeeId

28, Truy vấn EmployeeId, FirstName, LastName và số lượng người mua của mỗi nhân viên cấp dưới .

12345678910

SELECT

EmployeeId,

CONCAT(FirstName,’ ‘,LastName)ASFullname,

Support.Clients

FROMEmployeeINNERJOIN(

SELECTSupportRepId,COUNT(*)ASClients

FROMCustomer

GROUPBYSupportRepId

)ASSupport

ONEmployee.EmployeeId=Support.SupportRepId

29, Truy vấn thông tin 3 người mua tiêu tốn nhiều nhất trong năm 2012 .

123456789

SELECT*

FROMCustomer

WHERECustomerIdIN(

SELECTTOP(3)CustomerId

FROMInvoice

WHEREYEAR(InvoiceDate)=2012

GROUPBYCustomerId

ORDERBYSUM(Total)DESC

)

30, Truy vấn 3 thể loại được ưu thích nhất của shop .

123456

SELECTTOP(3)Genre.Name,COUNT(*)ASSales

FROMInvoiceLine

INNERJOINTrackONInvoiceLine.TrackId=Track.TrackId

INNERJOINGenreONGenre.GenreId=Track.GenreId

GROUPBYGenre.Name

ORDERBYSalesDESC

31, Liệt kê toàn bộ thông tin trong bảng “ Playlist ” .

12

SELECT*

FROMPlaylist

32, Liệt kê toàn bộ những quốc tra trong bảng “ Customer ”. Mỗi giá trị chỉ in ra 1 lần duy nhất .

12

SELECTDISTINCTCountry

FROMCustomer

33, Liệt kê tổng thể những Track có tên tác giả ( Composer ) có từ ‘ smith ’ VÀ genreId = 3 .

123

SELECT*

FROMTrack

WHEREComposerLIKE’ % smith % ‘ANDGenreId=3

34, Liệt kê thông tin của 5 hóa đơn có giá trị cao nhất trong năm 2012 .

1234

SELECTTOP(5)*

FROMInvoice

WHEREYEAR(InvoiceDate)=2012

ORDERBYTotalDESC

35, Tính tổng doanh thu của shop trong năm 2012 .

123

SELECTSUM(total)AS’ Total Income 2012 ‘

FROMInvoice

WHEREYEAR(InvoiceDate)=2012

36, Đếm số lượng bài hát của từng thể loại .

1234

SELECTGenre.NameASGenre,COUNT(*)ASTrack_No

FROMTrackINNERJOINGenre

ONTrack.GenreId=Genre.GenreId

GROUPBYGenre.Name

37, Liệt kê toàn bộ những bài hát ( Track ) thuộc thể loại nhạc ‘ Rock ’ .

1234

SELECTTrack.*

FROMTrackINNERJOINGenre

ONTrack.GenreId=Genre.GenreId

WHEREGenre.Name=’ Rock ‘

38, Liệt kê tên tổng thể Album của Artist “ AC / DC ” .

1234

SELECTAlbum.TitleASAlbum,Artist.NameASArtist

FROMAlbumINNERJOINArtist

ONAlbum.ArtistId=Artist.ArtistId

WHEREArtist.Name=’ AC / DC ‘

39, Liệt kê tổng thể thể loại .

12

SELECT*

FROMGenre

40, Liệt kê toàn bộ những playlist .

12

SELECT*

FROMPlaylist

41, Liệt kê toàn bộ những nghệ sĩ .

12

SELECT*

FROMArtist

42, Liệt kê tổng thể những thành phố trong bảng Invoice. Mỗi giá trị chỉ được hiển thị 1 lần duy nhất .

12

SELECTDISTINCTBillingCity

FROMInvoice

43, Liệt kê tổng thể những vương quốc trong bảng Invoice. Mỗi giá trị chỉ được hiển thị 1 lần duy nhất

12

SELECTDISTINCTBillingCountry

FROMInvoice

44, Liệt kê toàn bộ những vương quốc trong bảng Customer. Mỗi giá trị chỉ được hiển thị 1 lần duy nhất .

12

SELECTDISTINCTCountry

FROMCustomer

45, Liệt kê tổng thể những người mua tại ‘ USA ’ hoặc ‘ Brazil ’ .

123

SELECT*

FROMCustomer

WHERECountry=’ USA ‘ORCountry=’ Brazil ‘

46, Liệt kê tổng thể những người mua tại thành phố ‘ Toronto ’, ‘ Canada ’ .

123

SELECT*

FROMCustomer

WHERECity=’ Toronto ‘ANDCountry=’ Canada ‘

47, Liệt kê toàn bộ người mua có FirstName mở màn bằng chữ ‘ h ’ hoặc chữ ‘ k ’ .

123

SELECT*

FROMCustomer

WHEREFirstNameLIKE’ h % ‘ORFirstNameLIKE’ k % ‘

48, Liệt kê những hóa đơn trong tháng 5 năm 2012 .

123

SELECT*

FROMInvoice

WHEREInvoiceDateBETWEEN’ 2012 – 05-01 ‘AND’ 2012 – 05-31 ‘

49, Liệt kê những hóa đơn có giá trị từ 5 – 10 USD .

123

SELECT*

FROMInvoice

WHERETotalBETWEEN5AND10

50, Liệt kê những hóa đơn từ một trong những thành phố : ‘ New York ’, ‘ Chicago ’ và ‘ Toronto ’ .

123

SELECT*

FROMInvoice

WHEREBillingCityIN(‘ New York ‘,’ Chicago ‘,’ Toronto ‘)

51, Liệt kê 5 hóa đơn có giá trị lớn nhất .

123

SELECTTOP(5)*

FROMInvoice

ORDERBYTotalDESC

52, Liệt kê 5 bài hát có giá cao nhất .

123

SELECTTOP(5)*

FROMTrack

ORDERBYUnitPriceDESC

53, Liệt kê 5 bài hát có thời lượng dài nhất .

123

SELECTTOP(5)*

FROMTrack

ORDERBYMillisecondsDESC

54, Tính giá trị trung bình những hóa đơn .

12

SELECTAVG(Total)

FROMinvoice

55, Tính giá tiền trung bình những bài hát .

12

SELECTAVG(UnitPrice)

FROMTrack

56, Đếm tổng số lượng người mua .

12

SELECTCOUNT(*)

FROMCustomer

57, Đếm số lượng bài hát theo từng AlbumId .

123

SELECTAlbumId,COUNT(*)

FROMTrack

GROUPBYAlbumId

58, Đếm số lượng bài hát theo từng GenreId .

123

SELECTGenreId,COUNT(*)

FROMTrack

GROUPBYGenreId

59, Đếm số lượng bài hát theo từng MediaTypeId .

123

SELECTMediaTypeId,COUNT(*)

FROMTrack

GROUPBYMediaTypeId

60, Liệt kê toàn bộ bài hát thuộc thể loại nhạc ‘ Pop ’ .

1234

SELECT*

FROMTrackINNERJOINGenre

ONTrack.GenreId=Genre.GenreId

WHEREGenre.Name=’ Pop ‘

61, Liệt kê tổng thể bài hát thuộc album ‘ Big Ones ’ .

1234

SELECT*

FROMTrackINNERJOINAlbum

ONTrack.AlbumId=Album.AlbumId

WHEREAlbum.Title=’ Big Ones ‘

62, Liệt kê tổng thể bài hát có định dạng Media là ‘ MPEG audio file ’ .

1234

SELECT*

FROMTrackINNERJOINMediaType

ONTrack.MediaTypeId=MediaType.MediaTypeId

WHEREMediaType.Name=’ MPEG audio file ‘

63, Liệt kê tổng thể bài hát kèm theo tên Album tương ứng .

123

SELECT*

FROMTrackINNERJOINAlbum

ONTrack.AlbumId=Album.AlbumId

64, Liệt kê tổng thể những Album kèm theo tên nghệ sĩ tương ứng .

123

SELECT*

FROMAlbumINNERJOINArtist

ONAlbum.ArtistId=Album.AlbumId

65, Liệt kê toàn bộ những hóa đơn kèm theo thông tin người mua tương ứng .

123

SELECT*

FROMInvoiceINNERJOINCustomer

ONInvoice.CustomerId=Customer.CustomerId

66, Liệt kê những thể loại ( kèm số lượng bài hát tương ứng ) có số lượng bài hát lớn hơn 100 .

12345

SELECTGenre.GenreId,COUNT(*)

FROMTrackINNERJOINGenre

ONTrack.GenreId=Genre.GenreId

GROUPBYGenre.GenreId

HAVINGCOUNT(*)>100

67, Liệt kê tên album ( kèm số lượng bài hát tương ứng ) có số lượng bài hát lớn hơn 15 .

12345

SELECTAlbum.AlbumId,COUNT(*)

FROMTrackINNERJOINAlbum

ONTrack.AlbumId=Album.AlbumId

GROUPBYAlbum.AlbumId

HAVINGCOUNT(*)>15

68, Liệt tên những loại Media ( kèm số lượng bài hát tương ứng ) có số lượng bài hát lớn hơn 200 .

12345

SELECTMediaType.MediaTypeId,COUNT(*)

FROMTrackINNERJOINMediaType

ONTrack.MediaTypeId=MediaType.MediaTypeId

GROUPBYMediaType.MediaTypeId

HAVINGCOUNT(*)

>

200