Đăng Nhập
Latest topics
SOLUTION IN LAB 6
3 posters
Trang 1 trong tổng số 1 trang
SOLUTION IN LAB 6
Tạo DB ,TABLE, INSERT dữ liệu
-- 1. Viết QUERY Hiển thị các cột EmployeeID, FirstName,Department,HiredDate
-- 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
-- 3. Viết Query xác định lương trung bình của mỗi phòng ban
-- 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
--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
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
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- Khỉ Trưởng Lão
- Tổng số bài gửi : 10
Join date : 28/11/2010
Re: SOLUTION IN LAB 6
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ỉ
Bạn tưởng chỉ "Group by" nào thì "Having" cho "Group by" đó chứ.
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
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- Khỉ Trưởng Lão
- Tổng số bài gửi : 34
Join date : 23/09/2010
Đến từ : Nhà người ta..
Re: SOLUTION IN LAB 6
Cái gì tả lả vậy hai bố
Bonstar- Khỉ Trưởng Lão
- Tổng số bài gửi : 80
Join date : 15/09/2010
Age : 32
Đến từ : Tp.HCM
Re: SOLUTION IN LAB 6
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ỉ
Bạn tưởng chỉ "Group by" nào thì "Having" cho "Group by" đó chứ.
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
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ỉ
Anonymous442666- Khỉ Trưởng Lão
- Tổng số bài gửi : 10
Join date : 28/11/2010
Re: SOLUTION IN LAB 6
Từ câu 1 đến câu 5 tui có thấy chữ nào là "hiển thị" đâu??? 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- Khỉ Trưởng Lão
- Tổng số bài gửi : 34
Join date : 23/09/2010
Đến từ : Nhà người ta..
Trang 1 trong tổng số 1 trang
Permissions in this forum:
Bạn không có quyền trả lời bài viết
|
|
Mon Dec 02, 2013 6:22 pm by hoangthai0302
» [Tham khảo] Đề thi BDW FPT
Wed 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
Mon Jul 08, 2013 11:44 am by aiglevnpro
» Đây là tài liệu học RDBMS mời download
Fri Nov 09, 2012 9:51 am by laiconghung
» [Tham Khảo] Ass 4 của tui :)
Fri Oct 26, 2012 10:21 pm by dat21892
» Giới thiệu Đại học FPT-Greenwich
Thu Oct 11, 2012 2:02 pm by comnhom.it
» De Ly Thuyet 134 cau day. Chuan luon do cua aptech nha
Tue Jun 26, 2012 10:33 pm by PhucBach
» THÔNG BÁO CƠ HỘI NGHỀ NGHIỆP
Tue 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
Tue May 01, 2012 12:15 pm by mr_icode