【问题标题】:SQL Query to find who are born until the year 2000SQL 查询查找出生到 2000 年的人
【发布时间】:2022-01-17 21:00:03
【问题描述】:

给出了两个关系: 员工AngID、姓名、姓氏、出生日期、性别、教育程度、职位、月薪、DepID部门部门ID、部门名称、城市

打印解决以下问题的一个或多个 SQL 语句: 根据出生年份显示员工人数,他们出生到 2000 年。将显示以下内容:年份,人数。元组将按出生年份的降序排列。

我试过这个:

SELECT Year, Number
FROM Employee
WHERE Date of Birth <2000 AS Num
ORDER BY Date of Birth DESC

【问题讨论】:

  • 根据问题指南,请展示您的尝试并告诉我们您发现了什么(在本网站或其他地方)以及为什么它不能满足您的需求。
  • 请提供minimal reproducible example 示例数据、期望的结果以及您的尝试。
  • 您的尝试似乎不太可能,因为它存在语法错误。请确保它正常工作 minimal reproducible example.
  • 你的说法有很多错误。 WHERE Date of BirthORDER BY Date of Birth 无效,因为您需要分隔标识列的名称。 Date of Birth &lt;2000(如果被识别)不太可能不正确,因为2000 不是 date&lt;2000 AS Num 无效,因为您没有为 FROM 中的列设置别名。此外,您的表 Employee(根据描述)没有列 NumberYear
  • 我认为您要寻找的只是计算出生年份的员工人数?

标签: sql sql-server tuples


【解决方案1】:

我假设这是您所追求的查询:

SELECT YEAR(DateofBirth) as Year, Count(1) AS NumberOfEmployees
FROM Employee
WHERE DateofBirth < '2000-01-01'
GROUP BY YEAR(DateofBirth)
ORDER BY YEAR(DateofBirth) DESC

此查询将过滤所有在 2000 年之前出生的员工。它将按年份对记录进行分组并显示计数。

sqlfiddle 示例

【讨论】:

  • 我建议使用WHERE 的实际日期。在 DateofBirth 列上使用 YEAR 将不会是 SARGable。
  • @Larnu 谢谢修复
  • Count(1) 是什么意思?
  • @MarcelinaBulai 统计所有符合条件的记录。
  • @Elad 非常感谢!
【解决方案2】:

显示员工人数

COUNT(*)

FROM Employee emp

根据出生年份

GROUP BY DATEPART(YEAR, [Date of Birth])

2000 年之前出生的人。

WHERE [Date of Birth] < '2001-01-01' 

将显示以下内容:年份、数字。

DATEPART(YEAR, [Date of Birth]) AS [Year], 
COUNT(*) AS [Number] 

元组将按出生年份的降序排列。

ORDER BY [Year] DESC

SQL:

SELECT
  DATEPART(YEAR, [Date of Birth]) AS [Year] 
, COUNT(*) AS [Number] 
FROM Employee emp
WHERE [Date of Birth] < '2001-01-01' 
GROUP BY DATEPART(YEAR, [Date of Birth]) 
ORDER BY [Year] DESC

【讨论】:

  • 小提琴链接坏了23503ERROR: insert or update on table "history" violates foreign key constraint "history_rdbms_code_fkey" DETAIL: Key (rdbms_code, sample_name, fiddle_hash)=(sqlserver_2019, , \x5ee2bd537bb85b37f168bad5106fbedf) is not present in table "fiddle". CONTEXT: SQL function "loghistory" statement 1
  • 我认为这是 dbfiddle 的错,不是用户,@Andrew。
  • @Larnu 也许,但无论出于何种原因,用户仍然需要纠正一个错误的链接 - 使用正确存在的小提琴删除或重做(可能在站点或用户上,具体取决于关于为什么小提琴似乎不存在)
  • 使用示例数据库时,链接到 dbfiddle.uk 似乎有问题。那好吧。那就别提琴了。
猜你喜欢
  • 1970-01-01
  • 2011-03-19
  • 1970-01-01
  • 2017-10-20
  • 2021-06-27
  • 1970-01-01
  • 2016-03-25
  • 2021-01-25
  • 1970-01-01
相关资源
最近更新 更多