我最近才开始学习如何编写SQL查询,我有很多需要学习的知识和许多问题,主要是关于定义SQL查询的条件。我有三个表(下面列出了字段):
Employee:
EmployeeID, Name, DoB, StartDate
Salary:
SalaryID, DataPaid, AmountPaid, EmployeeID
Address:
AddressID, Address, City, EmployeeID现在我想知道如何:
1.统计住在伦敦金融城的雇员人数。。
我的尝试:
SELECT COUNT(City) AS EmployeeID FROM Address
WHERE City='London'; 2.将伦敦金融城所有雇员的“AmountPaid”值相加。。
我的尝试:
SELECT SUM(AmountPaid) AS TotalPaid FROM Salary
WHERE City='London';3.显示2012年开始的所有员工的数据(有一个包含2012年的“开始日期”)。不知道从哪里开始!
4.删除员工姓名字段为空/null.的所有记录
我的尝试:
DELETE FROM Employee
WHERE Name=NULL; 我的尝试做错了什么吗?任何帮助都将不胜感激。谢谢!
发布于 2014-11-14 15:12:33
在Server ( test )中,不能使用'=‘测试NULL值.它必须如下:
Delete From Employee Where Name IS NULL发布于 2014-11-14 15:13:38
此外,我还会检查空名:
DELETE FROM Employee where Name IS NULL OR Name=''关于第3点:
SELECT * FROM Employee WHERE Year(StartDate)=2012至于第2点,表中的工资没有“城市”栏。您需要像这样加入Employee表:
SELECT SUM(AmountPaid) AS TotalPaid FROM Salary SA inner join Employee Em on Em.EmployeeID=SA.EmployeeID WHERE Em.City='London';发布于 2014-11-14 15:31:55
闻起来有点像家庭作业。总之:
(1)伦敦金融城()雇员人数
第一句在我看来是正确的,不是吗?但是别名让我有点困惑,因为它说的是EmployeeID,但返回的值是员工的计数。
(2)为伦敦金融城()雇员支付的总金额
这将不适用于您的语句,因为表Salary没有字段City。你需要加入这里:
select sum(AmountPaid) as TotalPaid
from Salary s
join Address a on s.EmployeeID = a.EmployeeID
where a.City = 'London'(3)员工始于2012年
在这里,您可以使用date函数提取日期以外的年份:
select *
from Employee
where Year(StartDate) = 2012(4)删除未具名的雇员
摘自@ericpap的解决方案(为了完整起见):
delete from Employee
where Name is NULL
or Name = ''https://stackoverflow.com/questions/26933008
复制相似问题