首页
学习
活动
专区
圈层
工具
发布

条件SQL
EN

Stack Overflow用户
提问于 2014-11-14 15:10:27
回答 5查看 147关注 0票数 0

我最近才开始学习如何编写SQL查询,我有很多需要学习的知识和许多问题,主要是关于定义SQL查询的条件。我有三个表(下面列出了字段):

代码语言:javascript
复制
Employee: 
EmployeeID, Name, DoB, StartDate

Salary:
SalaryID, DataPaid, AmountPaid, EmployeeID

Address:
AddressID, Address, City, EmployeeID

现在我想知道如何:

1.统计住在伦敦金融城的雇员人数。

我的尝试:

代码语言:javascript
复制
SELECT COUNT(City) AS EmployeeID FROM Address
WHERE City='London'; 

2.将伦敦金融城所有雇员的“AmountPaid”值相加。

我的尝试:

代码语言:javascript
复制
SELECT SUM(AmountPaid) AS TotalPaid FROM Salary
WHERE City='London';

3.显示2012年开始的所有员工的数据(有一个包含2012年的“开始日期”)。不知道从哪里开始!

4.删除员工姓名字段为空/null.的所有记录

我的尝试:

代码语言:javascript
复制
DELETE FROM Employee
WHERE Name=NULL; 

我的尝试做错了什么吗?任何帮助都将不胜感激。谢谢!

EN

回答 5

Stack Overflow用户

发布于 2014-11-14 15:12:33

在Server ( test )中,不能使用'=‘测试NULL值.它必须如下:

代码语言:javascript
复制
Delete From Employee Where Name IS NULL
票数 2
EN

Stack Overflow用户

发布于 2014-11-14 15:13:38

此外,我还会检查空名:

代码语言:javascript
复制
DELETE FROM Employee where Name IS NULL OR Name=''

关于第3点:

代码语言:javascript
复制
SELECT * FROM Employee WHERE Year(StartDate)=2012

至于第2点,表中的工资没有“城市”栏。您需要像这样加入Employee表:

代码语言:javascript
复制
SELECT SUM(AmountPaid) AS TotalPaid FROM Salary SA inner join Employee Em on Em.EmployeeID=SA.EmployeeID WHERE Em.City='London';
票数 1
EN

Stack Overflow用户

发布于 2014-11-14 15:31:55

闻起来有点像家庭作业。总之:

(1)伦敦金融城()雇员人数

第一句在我看来是正确的,不是吗?但是别名让我有点困惑,因为它说的是EmployeeID,但返回的值是员工的计数。

(2)为伦敦金融城()雇员支付的总金额

这将不适用于您的语句,因为表Salary没有字段City。你需要加入这里:

代码语言:javascript
复制
select sum(AmountPaid) as TotalPaid
  from Salary s
  join Address a on s.EmployeeID = a.EmployeeID
  where a.City = 'London'

(3)员工始于2012年

在这里,您可以使用date函数提取日期以外的年份:

代码语言:javascript
复制
select *
  from Employee
  where Year(StartDate) = 2012

(4)删除未具名的雇员

摘自@ericpap的解决方案(为了完整起见):

代码语言:javascript
复制
delete from Employee
  where Name is NULL
     or Name = ''
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26933008

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档