1. Trang chủ
  2. » Công Nghệ Thông Tin

bài tập về sql

14 1,7K 3

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 14
Dung lượng 140 KB

Nội dung

BµI TËP VÒ sqlMỤC TIÊU CỦA BÀI NÀY GIÚP NGƯỜI HỌC  Hiểu và phân biệt 3 nhóm lệnh của ngôn ngữ SQL  Giải một số bài tập thao tác trên quan hệ có sử dụng 3 nhóm lệnh trên.. Lệnh CREATE L

Trang 1

4 BµI TËP VÒ sql

MỤC TIÊU CỦA BÀI NÀY GIÚP NGƯỜI HỌC

 Hiểu và phân biệt 3 nhóm lệnh của ngôn ngữ SQL

 Giải một số bài tập thao tác trên quan hệ có sử dụng 3 nhóm lệnh trên.

 Vận dụng giải quyết các bài toán tổng hợp.

A/ NHẮC LẠI LÝ THUYẾT

I CÁC NHÓM LỆNH CỦA NGÔN NGỮ SQL

Phân biệt các nhóm câu lệnh sau:

- Các lệnh DDL: CREATE, ALTER, DROP.

a Lệnh CREATE

Lệnh này dùng để tạo ra các quan hệ như TABLE,VIEW,INDEX

CREATE TABLE

-Bảng là một cấu trúc c bn để cất giữ trong hệ thống quan hệ.Có khuôn dạng hai chiều gồm

có các cột và hàng.Nó là yếu tố cơ bản cho các thao tác khác nhau.Có thể nói việc tạo bảng

là bước đầu tiên quan trọng nhất để thiết lập CSDL

-Cú pháp của lệnh này:

CREATE TABLE table-name(colom_name type(size) )

Khi tạo ra bảng chúng ta phải chỉ ra kiểu dữ liệu của cột và mỗi cột chỉ có thể có môt kiểu dữ liệu duy nhất.Khi tạo bảng ta có thể đưa ra các ràng buộc

Các ràng buộc của các trường có thể là : primary key,foreign key ,unique,not null

VD:Tạo bảng nhân viên

CREATE TABLE NHAN_VIEN (#NV varchar(4) constraint NV_Primary key,ho_tên Varchar(25),Ng_sinh date,chứcvụ varchar(20),đia_chỉ varchar(30).lưng number(7));

trong VD trên ta tạo ra một ràng buộc là #NV được định nghĩa là primary key

-Ta cũng có thể tạo ra bảng mới với cấu trúc và dữ liệu từ 1 bảng khác

Cú pháp:

CREATE TABLE TABLE_name[(colum_name )]AS

SELECT statement;

VD:Tạo ra 1 bảng mới có tên là NVN (#NV,họ_tên) từ bảng NHAN_VIEN

CREATE TABLE NVN AS SELECT #NV,họ_tên FROM NHAN_VIEN;

b Lệnh ALTER

-Dùng để hoặc là thêm một hay nhiều trường vào bng hoặc sửa đổi một cột hiện

tại.SQL ANSI chuẩn không cho phép huỷ bỏ các cột

-Cú pháp:

ALTER TABLE TABLE_name ADD | MODIFY | DROP option (colum Datatype )

+ADD:thêm cột mới

+MODIFY:sửa đổi cột

+DROP option xoá bỏ các ràng buộc

VD1:thêm trường gia đình kiểu char(1) vào R1

ALTER TABLE R1 ADD gia đình char(1);

VD2:Thay đổi trường Địa_chỉ Varchar(30) trong R1 thành Địa_Chỉ(20):

ALTER TABLE R1 MODIFY Địa_Chỉ varchar(20);

Trang 2

VD3:Huỷ bỏ ràng buộc trường khoá #NV trong R1

ALTER TABLE R1 DROP constraint NV_prim

c Lệnh DROP

-Dùng để xoá bỏ một quan hệ,khi ta xoá bỏ một bng c sở thì tất c các VIEW,INDEX được định nghĩa trên bng đó sẽ bị xoá bỏ

Cú phap:

DROP TABLE/VIEW/INDEX Name;

VD:Xoá bỏ Nhân_viên_id;

DROP INDEX Nhân_viên_id;

- Các lệnh DML: SELECT, UPDATE, INSERT, DELETE, …

a Lệnh SELECT

Mệnh đề SELECT tương ứng với toán tử project(phép chiếu p) của đại số quan hệ Khối lệnh SELECT gồm có ba mệnh đề chính:

+SELECT:xác định nội dung của các cột cấn đưa ra

+FROM:danh sách các quan hệ được quét qua

+WHERE:ứng với một khẳng định lựa chọn của đại số quan hệ

-Lệnh SELECT thường có dạng:

SELECT [distinct]*/A1 An FROM R1, R2 ,Rm

[WHERE p];

Trong đó :

Ai là các thuộc tính

Rj là các quan hệ (có thể là các TABLEs,VIEWs )Ta có thể dùng các bí danh cho các Ai,rj p:là điều kiện ràng buộc

ở đây WHERE có thể có hoặc không

Dùng *để chỉ tất cả các thuộc tính của các quan hệ được chọn

-Hỏi đáp này tương đưng với biểu diễn sau trong đại số quan hệ:

pA1 An[S p(r1 rm)]

-Để loại bỏ các bộ giá trị (các hàng) trùng nhau ta thêm từ khoá Distinct vào sau SELECT (trước đây SQL thêm từ khoá unique)

-Trong khẳng định p:ta có thể dùng các liên từ logic and,or,not khi kết hợp nhiều điều kiện VD1:Để hiện các thông tin về một nhân viên nào đó

gồm(#,Họ_tên,N_sinh,Chức_vụ,địa_chỉ,lưng)

SELECT Distinc * FROM R1;

Đưa ra (họ_tên,Nsinh,chức_vụ,địa_chỉ,lưng,tên_phòng) với điều kiện lưng 500.000 và đia_chỉ không ở Hà nội

SELECT Ho_tên,Nsinhn,chức_vụ,địa_chỉ,lưng,tên_phòng

FROM Nhânviên R1,Liênkêt R2,Phong R3

WHERE (R1.lưng 500.000) and (not R1.địa_chỉ=’Hà nội’) and

(R1.#NV=R2.#NV) and (R2.#MP=R3.#MP);

-Trong lệnh trên ta đã dùng R1,R2,R3 làm bí danh cho Nhânviên, Liênkêt,Phong

Các bí danh đó chỉ có tác dụng trong một câu lệnh

b Nhóm lệnh INSERT,UPDATE,DELETE:

Thêm một bộ vào quan hệ

Cú pháp: INSERT INTO Tên_Bảng(Danh sách tên cột)

VALUES(Danh sách các trị) [câuu hỏi con]

VD:chèn 1 hàng (‘020’,’Nguyễn trọng Nghĩa’,Bảo vệ’,’Hà nội’,’800.000’) vào R1

INSERT INTO R1 VALUES(‘020’,’Nguyễn trọng Nghĩa’,Bảo vệ’,’Hà nội’,800.000);

Xó́a các bảng

Dùng để xoá bỏ 1 hoặc nhiều bộ trong quan hệ

DELETE FROM R[WHERE P]

Những bộ nào tho mãn đk P thì mới bị huỷ bỏ khỏi quan hệ R

VD: DELETE FROM R1 WHERE ng_sinh ’01-01-1935’;

Trang 3

Xoá bỏ tất cả các nhân viên ta dùng lệnh:

DELETE FROM R1;

Sửa dữ liệu

Cú pháp: UPDATE [Tên_bảng]

SET [Tên_cột=Biểu thức, ]

[FROM Tên_Bảng]

[WHERE btđk]

- Các lệnh DCL: GRANT, REVOKE.

GRANT Quyền truy cập ON Tên_bảng/view TO Tên_User [ with GRANT

option]

- Các quyền truy nhập CSDL gồm:

+Read(đọc)

+ SELECT(chọn)

+ Write(ghi)

+ INSERT(bổ sung)

+ UPDATE(sửa đổi)

+ DELETE,run

- Tên người sử dụng:Tên của một người ,một nhóm người hoặc danh sách người

public:cho tất c mọi người cùng được sử dụng

- Từ khoá :with grant OPTION:đm bo để người sử dụng có thể tiếp tục trao quyền sử dụng cho người khác

VD:Cho phép SELECT,INSERT,UPDATE trên bảng R1 cho Nghĩa,Khôi

GRANT SELECT,INSERT,UPDATE ON R1 TO Nghĩa,Khôi with grant option;

Tức là Nghĩa,Khôi có thể trao quyền trên cho người khác

*Để huỷ bỏ quyền truy nhập

REVOKE privileges ON object FROM user

VD: Để huỷ bỏ quyền UPDATE từ Nghĩa:

REVOKE UPDATE ON R1 FROM Nghĩa;

II CÁC VÍ DỤ

Ví dụ 1:

Cho quan hệ SINHVIEN (#masv char(10), hoten char(25), ngaysinh datetime, d1 double, d2 double, d3 double) Trong đó, masv là thuộc tính khóa của quan hệ trên

a) Hãy tạo lập cấu trúc trên

b) Chèn một cột gt boolean vào bảng trên

Lời giải:

a) Create Table SINHVIEN (MaSV Char(10), Hoten Char(25) not null, Ngaysinh

Date, d1 double, d2 double, d3 double, CONSTRAINT [khoa] Primary Key ([MaSV]))

b) Alter table sinhvien add gt yesno;

Ví dụ 2:

Cho CSDL gồm 2 quan hệ:

LOP (#Malop char (10), tenlop char(20))

SINHVIEN (malop char (10), #masv char(10), hoten char(20), ngaysinh datetime, d1 double, d2 double, d3 double)

a) Hãy đưa ra các thông tin của các sinh viên bao gồm: tenlop, masv, hoten, dtb của mỗi sinh viên

b) Đưa ra tổng số sinh viên của mỗi lớp

Trang 4

Lời giải:

a) SELECT lop.tenlop, sv.masv, ([d1]+[d2]+[d3])/3 AS dtb

FROM lop, sv WHERE lop.malop = sv.malop;

b) SELECT lop.tenlop, Count(sv.masv) AS CountOfmasv

FROM lop, sv WHERE lop.malop = sv.malop

GROUP BY lop.tenlop;

III MỘT SỐ LƯU Ý

 Các câu lệnh này có thể thử nghiệm trên một số hệ quản trị CSDL như SQL, Access,

 Phân biệt điều kiện sau mệnh đề Where và sau mệnh đề Having

B/ BÀI TẬP MẪU

Bài số 1:

Cho CSDL của hệ thống Quản lý nhân sự:

DONVI(MaDV C(3), TenDV C(20), Diachi C(20), MaNPT C(4))

NHANVIEN(MaNV C(4), Hoten C(20), NHVu C(20), Luong N(8), Phucap N(6), MaDV C(3))

Hãy đưa ra danh sách tất cả các đơn vị có trong tổ chức này

Hướng dẫn:

Ta thấy các thông tin lấy trong bảng đơn vị và câu lệnh thuộc nhóm khai thác dữ liệu

Lời giải:

SELECT TenDV, Diachi FROM DONVI

Bài số 2:

Để quản lý kinh doanh dùng các bảng sau:

+ HH(hàng hoá): MaHH C(3), TenHH C(20), Qcach C(20), DVT C(5), DGIA N(10) + CH(cửa hàng): MaCH C(3), TenCH C(20), DDiem C(20), PTrach C(4)

+ KH(khách hàng): MaKH C(4), TenKH C(20), Loai C(2), Diachi C(20)

+ CT(chứng từ): Sohieu C(12), Ngay D, LoaiCT C(1), MaKH C(4), MaCH C(3), MaHH C(3), SoLuong N(6)

a) Xem trong bng CT có những loại hàng hoá nào được xuất

Hướng dẫn:

Ta thấy trong bảng CT, mỗi chứng từ có thể bao gồm nhiều MaHH khác nhau, như vậy trong bảng CT sẽ có nhiều MaHH giống nhau, với yêu cầu trên ta chỉ cần đưa ra các MaHH khác nhau

Lời giải:

SELECT DISTINCT MaHH FROM CT

SELECT DISTINCT CT.MaHH, TenHH FROM CT, HH WHERE CT.MaHH = HH.MaHH

b) Đưa ra danh sách các nhân viên có lưng >=200000

SELECT * FROM NHANVIEN WHERE Luong >= 200000

Trang 5

c) Cho xem danh sách gồm 3 cột Mã đơn vị, họ tên, nhiệm vụ từ bảng nhân viên và được sắp xếp theo mã đơn vị, cùng đơn vị theo nhiệm vụ:

SELECT MaDV, Hoten, NHVu FROM NHANVIEN ORDER BY MaDV, NHVu

Mã đơn vị, họ tên, lương từ bảng NHANVIEN được sắp xếp theo mã đơn vị, cùng đơn vị theo lương gim dần:

SELECT MaDV, Hoten, Luong FROM NHANVIEN ORDER BY MaDV, Luong DESC

Chú ý:

1 Tên các cột trong <điều kiện ràng buộc> sau WHERE không nhất thiết phi có sau SELECT, các cột này không nhất thiết phải có trong bảng kết quả

2 Tên các cột sau ORDER BY… bắt buộc phải có sau SELECT, tức là các cột này bắt buộc phải có trong bảng kết quả

*) GROUP BY <tên cột>: Nếu có dùng để nhóm các hàng có cùng giá trị của tên cột đối với mỗi nhóm thì cùng thực hiện một thao tác tính toán nào đó

3 Cho xem mã hàng hoá, tên hàng hoá và tổng số tiền bán được của từng mặt hàng:

SELECT MaCT, MaHH, TenHH, SUM(Soluong*Dongia) FROm CT, HH WHERE CT.MaHH = HH.MaHH And Loai = “X” GROUP BY CT.MaHH

Cho xem m• đn vị, tên đn vị, mức lưng bình quân và số nhân viên của từng đn vị:

SELECT a.MaDV, TenDV, AGV(Luong), Cont (A.*) FROM NHANVIEN a, DONVI b WHERE a.MaDV = b.MaDV GROUP BY a.MaDV

*) Phần HAVING <điều kiện ràng buộc> chỉ phục vụ cho GROUP BY

Bài số 3:

R1=Nhân viên (#NV, Ho_tên, Nsinh, nghề nghiệp, Địa chỉ, lương)

R2=Liên kết (#NV, #MP) R3=Phong (#Mp, Tên_phong, tel)

1 Để hiện các thông tin về một nhân viên nào đó gồm(#NV , Họ_tên, N_sinh, Chức_vụ, địa_chỉ, lương)

SELECT Distinc * FROM R1;

2 Đưa ra (họ_tên,Nsinh,chức_vụ,địa_chỉ,lưng,tên_phòng) với đIều kiện lương 500.000 và đia_chỉ không ở Hà nội

SELECT Ho_tên,Nsinhn,chức_vụ,địa_chỉ,lưng,tên_phòng

FROM Nhânviên R1,Liênkêt R2,Phong R3

WHERE (R1.lưng 500.000) and (not R1.địa_chỉ=’Hà nội’) and

(R1.#NV=R2.#NV) and (R2.#MP=R3.#MP);

- Trong lệnh trên ta đã dùng R1,R2,R3 làm bí danh cho Nhânviên, Liênkêt, Phong

Các bí danh đó chỉ có tác dụng trong một câu lệnh

Các ví dụ sau này ta dùng R1,R2,R3 để thay cho các bảng trên cho gọn

Có 4 toán tử hay được dùng với các kiểu dữ liệu.Trong mệnh đề WHERE là:

In (not In)

Between and (not between )

Like(not like)

Is null (not is Null)

+ Toán tử In (not In):Dùng để kiểm tra giá trị trong (không nằm trong) một danh sách được chỉ ra

3 Đưa ra những người có đia_chỉ ở Hà nội và Hà tây

SELECT * FROM R1 WHERE đia_chỉ in (‘Hà nội’,’Hà tây’);

Trang 6

+Toán tử Between and (not ) : kiểm tra giá trị nằm giữa (không nằm giữa) một phạm vi được chỉ ra

4 Đưa ra những người có lưng nằm trong khong (500.000-:-1.000.000)

SELECT * FROM R1 WHERE lưng between 500.000 and 1.000.000;

+ Toán tử like (not like): Dùng để kiểm tra những giá trị giống (không giống) với giá tri sau like, thường sử dụng với xâu ký tự và khi ta không biết chính xác giá trị cần tìm kiếm hoặc giá trị cần tìm kiếm giống một mẫu nào đó.Trong SQL người ta sử dụng ký hiệu % cho xâu con

và ‘_’cho 1 ký tự bất kỳ

5 Tìm những người có tên mà có ký tự đầu tiên bất kỳ,ký tự tiềp theo là OA và tiếp theo là dãy ký tự bất kỳ:

SELECT *FROM R1 WHERE hoten=’_OA%’;

+ Toán tử Is Null (not is Null):kiểm tra cho các giá trị rỗng (không rỗng);

C/ BÀI TẬP TỰ GIẢI

Bài tập 1:

Cho CSDL gồm có ba quan hệ như sau

NCC(MaNCC, TenNCC, DCNCC, DT)

SP(MaSP, TenSP, Loai)

SP_NCC(MaNCC, MaSP, SL)

Giải thích một số từ viết tắt:

- MaNCC là mã số nhà cung cấp

- TenNCC là tên nhà cung cấp có mã số tương ứng

- DCNCC là địa chỉ của nhà cung cấp

- DT là điện thoại nhà cung cấp

- MaSP là mã số sản phẩm

- TenSP là tên của sản phẩm

- Loại là chủng loại của mặt hàng

- SL là số lượng đã cung cấp

- Quan hệ NCC ( nhà cung cấp ) dùng để lưu trữ một số thông tin về các nhà cung cấp

- Quan hệ SP ( sản phẩm ) dùng để lưu trữ một số thông tin của các mặt hàng

- Quan hệ SPỴNCC dùng để lưu trữ một số thông tin về việc cung ứng sản phẩm của NCC

Hãy viết biểu thức đại số quan hệ cho biết

a) Cho biết tên của nhà cung cấp có địa chỉ là Hà Nôi

b) Cho biết tên của các sản phẩm đã cung ứng bởi nhà cung cấp có mã số là HP c) Cho biết tên của các nhà cung ứng đã cung ứng các sản phẩm với số lượng 20 d) Cho biết tên của các nhà cung cấp đã cung ứng các sản phẩm

Bài tập 2:

Cho cơ sở dữ liệu gồm 3 quan hệ

SV(MSV, HT, NS, QUE)

ĐT(MĐT, TĐT, GV, KP)

TT(MSV, MĐT, NTT, KQ)

Trong đó :

MSV : Mã sinh viên HT : Họ tên sinh viên

NS : Năm sinh QUE : Quê quán MĐT : Mã đề tài TĐT : Tên đề tài

GV : Giáo viên KP : Kinh phí NTT : Nơi thực tập KQ : Kết quả

Trang 7

Hãy trả lời các câu hỏi sau dưới dạng biểu thức quan hệ :

a Cho biết tên của các giáo viên hướng dẫn sinh viên có quê ở Hà nội và có kết quả thực tập khá ( KQ >= 7)

b Cho biết tên của các sinh viên có kết quả thực tập khá và thực tập tại quê hoặc thực tập tại Quảng ninh

c Cho biết tên của các giáo viên hướng dẫn sinh viên có quê ở Hà nội và thực tập đề tài có kinh phí lơn hơn 5 triệu

d Cho biết tên của các sinh viên có kết quả thực tập khá và thực tập đề tài có kinh phí lớn hơn 4 triệu

e Danh sach sinh viên thực tập tại quê nhà

f Thông tin về các đề tài có sinh viên thực tập

g Cho biết mã của các đề tài không có sinh viên nào tham gia

h Cho biết mã của các đề tài có kinh phí nằm trong khoảng 1.5 đến 2 triệu

i Cho biết mã của sinh viên có tuổi nhỏ hơn 20 và kết qủa thực tập là khá ( KQ>7)

Bài số 3

Có CSDL thống kê về mối quan hệ giữa các quán bia (BAR) và những người uống (DRINKER) bia (BEER) như sau:

R(DRINKER, BAR) là quan hệ cho biết quán bia và những khách uống cần lui tới S(BAR, BEER) LÀ quan hệ cho biết các loại bia thường bán ở các quán Còn T( DRINKER, BEER) cho biết những loại bia mà một khách hàng ưu thích

Hãy viết các câu vấn tin sau bằng ngôn ngữ SQL:

a In các quán có loại bia Long thích

b In những khách hàng thường đi uống ít nhất một quán có bia họ thích

c In ra những khách hàng không đến uống ít nhất tại một quán có bia họ ưu thích

d Xoa tất cả loại bia tiger ra khỏi quan hệ S(DRINKER, BEER)

e Chèn thông tin Long thích bia Tiger

f Chèn tất thông tin Long thích tất cả các loại bia bán ở quán "San hô tím"

Bài số 4

Giả sử trong CSDL bia ở trên ta có thêm quan hệ BAN (BAR, BEER, SL) quan hệ cho biết số lượng từng loại bia đã bán ở các quán Hãy viết bằng SQL các vấn tin sau:

a Tổng số bia của mỗi loại bia đã bán

b Số lượng trung bình mỗi loại bia được bán ở các quán

c Số lượng loại được bán ra nhiều nhất (bán chạy nhất)

Bài số 5

Giả sử có quan hệ S(F, S, O) với ý nghĩa là tập tin S có kích thước S thuộc chủ nhân O và quan hệ FTD(F, T, D) với ý nghĩa F có kiểu T và nằm trong thư mục D Hãy dùng ngôn ngữ SQL để viết các câu vấn tin sau:

a In ra chủ nhân và kiểu tin của tất cả các tập tin có kích thước tối thiểu là 10.000/

b In ra tất c ả các tập tin được ông Tomax sở hữu/

c In ra kích thước trung bình của các tập tin có trong thư mục BIN

d In ra tất cả các tập tin có trong thư mục f với tên chứa chuỗi con abc

Bài số 6

Hãy dịch câu vấn tin sau sang đại số quan hệ

SELECT OWNER

Trang 8

WHERE FILE IN

(SELECT FILE FROM FTD WHERE TYPE = 'TEX'

Bài số 7

Hãy dùng ngôn ngữ SQL:

a Tạo bảng danh sách các sinh viên vừa thi vào trường của bạn, các thuộc tính ở đây là mã

số (số báo danh), tên, năm sinh, quê, điểm thi

b In danh sách học sinh đậu vào trường (>=20 điểm)

c In những sinh viên quê ở Sơn La, Lai Châu, Ninh Bình

Bài số 8

Cho cơ sở dữ liệu như sau :

HANGHOA (MA_HANG,TEN_HG) : Mỗi mặt hàng sẽ có một mã hàng, và một tên hàng

STT

FIELD NAME TYPE WIDTH DEC DIỄN GIẢI

DAILY(STT_DL, TEN_DL, DCHI_DL) : Mỗi đại lý có một số thứ tự, tên và một địa chỉ

STT

FIELD NAME TYPE WIDTH DEC DIỄN GIẢI

MUA (STT_DL, MA_HANG, NGAY_MUA, SOLG_MUA, TRIGIA_MUA) : Mỗi một ngày, đại lý

sẽ tổng kết xem đã mua những mặt hàng nào với số lượng và trị giá bao nhiêu

STT

FIELD NAME TYPE WIDTH DEC DIỄN GIẢI

BAN (STT_DL, MA_HANG, NGAY_BAN, SOLG_BAN, TRIGIA_BAN ) : Sau mỗi ngày, đại lý

sẽ tổng kết xem đã bán được những mặt hàng nào với số lượng và trị giá bán là bao nhiêu

Trang 9

STT

FIELD NAME TYPE WIDTH DEC DIỄN GIẢI

Yêu cầu : Viết các câu hỏi sau dưới dạng ngôn ngữ hỏi SQL

1 Tìm những mặt hàng đã bán trong tháng 1/95 tại đại lý số 3

2 Tìm những mặt hàng đã mua trước năm 1995 và có trị giá mua > 500000

3 Tìm tên và địa chỉ đại lý có mua bia Heineken

4 Tìm tất cả các mặt hàng mà đại lý số 2 đã bán trong năm 1994

5 Tìm tên những mặt hàng mà đại lý Vạn Lợi đã mua trước 01/01/95 và có số lượng mua lớn hơn 150

6 Tìm những mặt hàng đã được mua và bán trong cùng một ngày ở cùng một đại lý

7 Tìm tên và địa chỉ đại lý có tổng giá trị mua trong một ngày lớn hơn 700000

8 Tìm tổng giá trị mua và tổng giá trị bán của mặt hàng Coca Cola ở đại lý Tân Hiệp Hưng

9 Tìm đơn giá mua trung bình của bia Sài Gòn trên các đại lý

10 Tìm dơn giá mua trung bình của bia Sài gòn trên các đại lý

11 Tìm tên, địa chỉ của đại lý và những mặt hàng có số lượng mua và số lượng bán bằng nhau trong cùng một ngày

12 Tìm tổng thu nhập từng ngày trên từng đại lý

13 Tìm tổng giá trị mua trong tháng 1/95 tại đại lý Vạn Lợi

14 Tìm số mặt hàng có bán ở từng đại lý

15 Tìm tên và địa chỉ của đại lý có bán nhiều mặt hàng nhất

Gợi ý :

Câu 1 sele dist a.ma_hang, a.ten_hg, b.ngay_ban;

from hanghoa a, ban b;

Trang 10

where a.ma_hang=b.ma_hang;

and left(dtoc(b.ngay_ban),2)='01';

and b.stt_dl=3

Câu 2 sele dist a.ma_hang, a.ten_hg, b.ngay_mua, b.trigia_mua;

from hanghoa a, mua b;

where a.ma_hang=b.ma_hang;

and right(dtoc(b.ngay_mua),2)<'95';

and b.trigia_mua>500000

Câu 3 sele dist a.*;

from daily a, mua b, hanghoa c;

where a.stt_dl=b.stt_dl;

and b.ma_hang=c.ma_hang;

and upper(c.ten_hg)='BIA HEINEKEN'

Câu 4 sele dist a.ma_hang, a.ten_hg, b.ngay_ban;

from hanghoa a, ban b;

where a.ma_hang=b.ma_hang;

and b.stt_dl=2;

and right(dtoc(b.ngay_ban),2)='94';

Câu 5 sele dist a.ma_hang, a.ten_hg, b.ngay_mua, b.solg_mua;

from hanghoa a, mua b;

where a.ma_hang=b.ma_hang;

and right(dtoc(b.ngay_mua),2)<'95';

group by b.ma_hang;

having sum(b.solg_mua)>150

Câu 6 sele dist a.ma_hang, a.ten_hg, b.ngay_mua as ngay;

Ngày đăng: 05/07/2014, 14:50

TỪ KHÓA LIÊN QUAN

w