SELECT查询,其中一个属性具有条件而另一个属性不在同一个表SQL中

时间:2016-05-12 17:45:06

标签: sql oracle

问题陈述是:“创建一个查询,为您提供员工总数,并从该总数中,包括1995 - 1998年间雇用的员工总数”。

我设法考虑了两者并测试了它们,所以我知道它们分开了:

SELECT COUNT(employee_id) AS "Total number of employees"
FROM employees

第一个问题和

SELECT COUNT(employee_id) AS "Total between 1995-1198"
FROM employees
WHERE hire_date BETWEEN '1-ENE-1995' AND '31-12-1998';

2 个答案:

答案 0 :(得分:5)

您需要条件聚合。这是一种方法:

select count(*) as Count_Total,
       sum(case when hire_date >= date '1995-01-01' and hire_date < date '1999-01-01'
                then 1 else 0
           end) as Count1995_1998
from employees;

注意:

  • 这会使用date限定符作为日期。这允许您在Oracle中输入ISO标准格式。使用日期时,请使用一致的格式。
  • 这使用日期列的显式比较,<用于更晚的日期。这是故意的。在Oracle中,具有date数据类型的列也可以包含时间。时间组件可以抛出查询。
  • 条件聚合是在聚合函数中使用case语句。

答案 1 :(得分:-1)

我理解这个问题 Sql server:从雇员之间选择count(*)(firstDate,endDate) 我希望这对你有帮助