Screenshot from the test 我正在进行练习测试,无法弄清楚为什么我的答案是错误的。
任务是首先通过资历向最高级员工订购员工。 在我看来,当雇佣人员较低时,资历更高。雇用的人越久,他们就越有资历。因此,我认为正确的答案应该是#3 - 按雇用顺序排列(按升序排列)。此外,在#2中,评论是它是正确的但是对于双引号。但它会按资历按升序排序(先减少资历),这是不正确的。
我错过了什么? 谢谢你们!
答案 0 :(得分:2)
我在SQL server中创建了一个表,里面有一些虚拟日期,并输入了以下查询:
select *, Date1 seniority from Table_1 order by date1 desc
我得到了这个结果:
1 LastName Smith 2012-05-05 00:00:00.000 2012-05-05 00:00:00.000
1 MiddleName S 2012-04-04 00:00:00.000 2012-04-04 00:00:00.000
1 FirstName Joe 2012-03-03 00:00:00.000 2012-03-03 00:00:00.000
1 Date 12/12/2009 2011-06-06 00:00:00.000 2011-06-06 00:00:00.000
2 MiddleName Smith 2011-05-05 00:00:00.000 2011-05-05 00:00:00.000
2 FirstName Sam 2011-04-04 00:00:00.000 2011-04-04 00:00:00.000
据我所知,看起来测试排序顺序和引号需求都是错误的。我唯一的猜测是你的测试是指其他一些符合ANSI标准的SQL版本。不过,我不打算购买ANSI规范的副本。
答案 1 :(得分:2)
在order by子句中使用DESC
对日期进行排序按照您的描述进行操作;日期将是从最近到最近的订单。
参见this Oracle article演示ORDER BY
hire_date DESC
的示例3。
在这种情况下,您应该ORDER BY
雇用ASC
(默认设置)。
说明陈述的顺序错误,这也表明你可能已经在问题中找出了勘误。
答案 2 :(得分:0)
你很严谨,当雇佣人员较低时,资历较低。但是在他们给你的答案中,他们正在减去今天的日期减去雇佣人数,所以你得到的结果是每个雇员被雇用的年数(因为你除以365年)。 所以数字越多,他在公司工作的年数就越多。这就是你需要在desc模式下订购的原因