♫♥♫...:::Nhóm Học Sinh Fpt-Aptech:::...♫♥♫
Đăng Kí Thanh Viên Nào Mọi Người

Join the forum, it's quick and easy

♫♥♫...:::Nhóm Học Sinh Fpt-Aptech:::...♫♥♫
Đăng Kí Thanh Viên Nào Mọi Người
♫♥♫...:::Nhóm Học Sinh Fpt-Aptech:::...♫♥♫
Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.
Đăng Nhập

Quên mật khẩu

Latest topics
» Tài Liệu java và Dream8
SOLUTION IN LAB 6  I_icon_minitimeMon Dec 02, 2013 6:22 pm by hoangthai0302

» [Tham khảo] Đề thi BDW FPT
SOLUTION IN LAB 6  I_icon_minitimeWed Aug 14, 2013 8:08 pm by yowisu

» Nhận giúp làm đồ án, project cuối kỳ, bài tập lớn cho sinh viên học lập trình dotNet tại Hà Nội
SOLUTION IN LAB 6  I_icon_minitimeMon Jul 08, 2013 11:44 am by aiglevnpro

» Đây là tài liệu học RDBMS mời download
SOLUTION IN LAB 6  I_icon_minitimeFri Nov 09, 2012 9:51 am by laiconghung

» [Tham Khảo] Ass 4 của tui :)
SOLUTION IN LAB 6  I_icon_minitimeFri Oct 26, 2012 10:21 pm by dat21892

» Giới thiệu Đại học FPT-Greenwich
SOLUTION IN LAB 6  I_icon_minitimeThu Oct 11, 2012 2:02 pm by comnhom.it

» De Ly Thuyet 134 cau day. Chuan luon do cua aptech nha
SOLUTION IN LAB 6  I_icon_minitimeTue Jun 26, 2012 10:33 pm by PhucBach

» THÔNG BÁO CƠ HỘI NGHỀ NGHIỆP
SOLUTION IN LAB 6  I_icon_minitimeTue Jun 05, 2012 10:48 am by yenns

» Khóa học miễn phí thiết kế diễn đàn bằng Vbulletin tại ICODE
SOLUTION IN LAB 6  I_icon_minitimeTue May 01, 2012 12:15 pm by mr_icode


SOLUTION IN LAB 6

3 posters

Go down

SOLUTION IN LAB 6  Empty SOLUTION IN LAB 6

Bài gửi by Anonymous442666 Sun Nov 28, 2010 9:28 pm

Tạo DB ,TABLE, INSERT dữ liệu
CREATE DATABASE Biotron ON Primary
(
NAME='Biotron',
FILENAME='D:\SQL DATA\Biotron.mdf',
SIZE=3MB,
MAXSIZE=100MB,
FILEGROWTH=2MB
)
LOG ON
(
NAME='Biotron_log',
FILENAME='D:\SQL DATA\Biotron_log.ldf',
SIZE=1MB,
MAXSIZE=100MB,
FILEGROWTH=2MB
)

USE Biotron
--------------------------------
CREATE TABLE Employee
(
EmployeeID int not null primary key,
FirstName char(10),
LastName char(10),
Department varchar(50),
HiredDate datetime,
Salary money
)

INSERT INTO Employee VALUES(1,'John','Barlow','Research','7/31/2006 12:00:00 AM',500000)
INSERT INTO Employee VALUES(5,'Sarah','Parker','Human Resource','1/2/2005 12:00:00 AM',360000)
INSERT INTO Employee VALUES(6,'Jessica','Long','Research','1/2/2004 12:00:00 AM',440000)
INSERT INTO Employee VALUES(7,'Ian','Leventhal','Production','12/12/2003 12:00:00 AM',150000)
INSERT INTO Employee VALUES(8,'Rick','Sawtell','Production','2/26/2007 12:00:00 AM',260000)
INSERT INTO Employee VALUES(2,'Misha','Norton','Production','1/2/2004 12:00:00 AM',687500)
INSERT INTO Employee VALUES(3,'Jimmy','Giles','Quality','12/12/2003 12:00:00 AM',480000)
INSERT INTO Employee VALUES(4,'Tom','Harding','Sales','1/3/2000 12:00:00 AM',260000)

-- 1. Viết QUERY Hiển thị các cột EmployeeID, FirstName,Department,HiredDate
SELECT * FROM Employee

-- 2. Viết Query xác định các cột EmployeeID, FirstName,Department của các nhân viên đã làm trong 1 năm. Tăng 25% cho nhân viên đã làm trong 1 năm. Hiển thị trong cột mới tên là RevisedSalary

SELECT EmployeeID, FirstName,Department,Salary+(DATEPART(YYYY,GETDATE())-DATEPART(YYYY,HiredDate))*Salary*0.25 AS RevisedSalary FROM Employee
WHERE (DATEPART(YYYY,GETDATE())-DATEPART(YYYY,HiredDate))>=1

-- 3. Viết Query xác định lương trung bình của mỗi phòng ban
SELECT Department,AVG(Salary+(DATEPART(YYYY,GETDATE())-DATEPART(YYYY,HiredDate))*Salary*0.25) AS [Average Salary] FROM Employee
Group By Department

-- 4. Viết Query xác định lương trung bình của mỗi phòng ban với số nhân viên lớn hơn 1 được sắp xếp theo thứ tự giảm dần và được lưu vào bảng mới với tên là DepartmentWiseSalary
SELECT Department,COUNT(EmployeeID) AS [Number Of Emloyees],AVG(Salary+(DATEPART(YYYY,GETDATE())-DATEPART(YYYY,HiredDate))*Salary*0.25) AS [Average Salary] INTO DepartmentWiseSalary FROM Employee
GROUP BY Department
HAVING COUNT(EmployeeID)>1
ORDER BY AVG(Salary+(DATEPART(YYYY,GETDATE())-DATEPART(YYYY,HiredDate))*Salary*0.25) DESC

--5. Viết Query hiển thị danh sách những phòng ban có nhân viên đã làm việc trong công ty trên 3 năm
SELECT Department FROM Employee
WHERE DATEPART(YYYY,GETDATE())-DATEPART(YYYY,HiredDate)>3
GROUP BY Department



Lưu ý: Do đề chưa sát và dữ liệu INSERT vào không đc hay nên bài tập có thể làm như thế này - BÀI TẬP CHỈ MANG TÍNH THAM KHẢO
Anonymous442666
Anonymous442666
Khỉ Trưởng Lão
Khỉ Trưởng Lão

Tổng số bài gửi : 10
Join date : 28/11/2010

Về Đầu Trang Go down

SOLUTION IN LAB 6  Empty Re: SOLUTION IN LAB 6

Bài gửi by ananh Mon Nov 29, 2010 3:06 am

SELECT Department,COUNT(EmployeeID) AS [Number Of Emloyees],AVG(Salary+(DATEPART(YYYY,GETDATE())-DATEPART(YYYY,HiredDate))*Salary*0.25) AS [Average Salary] INTO DepartmentWiseSalary FROM Employee
GROUP BY Department
HAVING COUNT(EmployeeID)>1
ORDER BY AVG(Salary+(DATEPART(YYYY,GETDATE())-DATEPART(YYYY,HiredDate))*Salary*0.25) DESC

GROUP BY Department mà sao lại HAVING COUNT (EmployeeID) > 1 đc nhỉ Question
Bạn tưởng chỉ "Group by" nào thì "Having" cho "Group by" đó chứ. Neutral
Với lại ở cuối đoạn code này nên thêm vào dòng "Select * from DepartmentWiseSalary" thì sẽ xuất ra theo yêu cầu đề bài.
Sai sót chỗ nào xin chĩ giáo Very Happy
P/S: Theo ý kiến riêng của bạn "Hạn chế dùng hàm DATEPART() nếu đó ko phải là câu điều kiện(Where,Having v..v"
ananh
ananh
Khỉ Trưởng Lão
Khỉ Trưởng Lão

Tổng số bài gửi : 34
Join date : 23/09/2010
Đến từ : Nhà người ta..

Về Đầu Trang Go down

SOLUTION IN LAB 6  Empty Re: SOLUTION IN LAB 6

Bài gửi by Bonstar Mon Nov 29, 2010 1:36 pm

Cái gì tả lả vậy hai bố
Bonstar
Bonstar
Khỉ Trưởng Lão
Khỉ Trưởng Lão

Tổng số bài gửi : 80
Join date : 15/09/2010
Age : 32
Đến từ : Tp.HCM

Về Đầu Trang Go down

SOLUTION IN LAB 6  Empty Re: SOLUTION IN LAB 6

Bài gửi by Anonymous442666 Mon Nov 29, 2010 10:50 pm

ananh đã viết:
SELECT Department,COUNT(EmployeeID) AS [Number Of Emloyees],AVG(Salary+(DATEPART(YYYY,GETDATE())-DATEPART(YYYY,HiredDate))*Salary*0.25) AS [Average Salary] INTO DepartmentWiseSalary FROM Employee
GROUP BY Department
HAVING COUNT(EmployeeID)>1
ORDER BY AVG(Salary+(DATEPART(YYYY,GETDATE())-DATEPART(YYYY,HiredDate))*Salary*0.25) DESC

GROUP BY Department mà sao lại HAVING COUNT (EmployeeID) > 1 đc nhỉ Question
Bạn tưởng chỉ "Group by" nào thì "Having" cho "Group by" đó chứ. Neutral
Với lại ở cuối đoạn code này nên thêm vào dòng "Select * from DepartmentWiseSalary" thì sẽ xuất ra theo yêu cầu đề bài.
Sai sót chỗ nào xin chĩ giáo Very Happy
P/S: Theo ý kiến riêng của bạn "Hạn chế dùng hàm DATEPART() nếu đó ko phải là câu điều kiện(Where,Having v..v"

ĐÊ BÀI bảo rằng. Tính lương trung bình MỖI PHÒNG BAN. => mình tính lương trung bình của mỗi phòng ban trước

Sau đó có thêm điều kiện rằng. PHÒNG BAN phải có số nhân viên >1=> khi group by lại rồi mới biết nhân viên trong PHÒNG BAN bao nhiêu mới có thể xác định đc điều kiện.Vì đó là điều kiện sau khi Group by nên mình dùng HAVING

Và đề bảo LƯU VÀO BẢNG CÓ TÊN DepartmentWiseSalary chứ không bảo mình hiển thị giá trị có trong bảng => bước SELECT * FROM DepartmentWiseSalary là không cần thiết. Không biết nói thế có đúng không nhỉ Very Happy
Anonymous442666
Anonymous442666
Khỉ Trưởng Lão
Khỉ Trưởng Lão

Tổng số bài gửi : 10
Join date : 28/11/2010

Về Đầu Trang Go down

SOLUTION IN LAB 6  Empty Re: SOLUTION IN LAB 6

Bài gửi by ananh Mon Nov 29, 2010 11:31 pm

Từ câu 1 đến câu 5 tui có thấy chữ nào là "hiển thị" đâu??? Shocked Shocked Shocked Mà ông vẫn dịch là "hiển thị" đó thôi. Ông ko hiễn thị nó ra, biết ông có làm đúng hay sai ... còn sắp xếp nữa chứ ... vậy "SELECT * FROM DepartmentWiseSalary"có cần thiết hay ko ???
ananh
ananh
Khỉ Trưởng Lão
Khỉ Trưởng Lão

Tổng số bài gửi : 34
Join date : 23/09/2010
Đến từ : Nhà người ta..

Về Đầu Trang Go down

SOLUTION IN LAB 6  Empty Re: SOLUTION IN LAB 6

Bài gửi by Sponsored content


Sponsored content


Về Đầu Trang Go down

Về Đầu Trang


 
Permissions in this forum:
Bạn không có quyền trả lời bài viết