当前在线人数14083
首页 - 分类讨论区 - 电脑网络 - 数据库版 - 同主题阅读文章

此篇文章共收到打赏
0

  • 10
  • 20
  • 50
  • 100
您目前伪币余额:0
未名交友
[更多]
[更多]
SQL OnSite 试题one
[版面:数据库][首篇作者:river08] , 2020年01月22日11:59:54 ,650次阅读,10次回复
来APP回复,赚取更多伪币 关注本站公众号:
[分页:1 ]
river08
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 1 ]

发信人: river08 (sh), 信区: Database
标  题: SQL OnSite 试题one
发信站: BBS 未名空间站 (Wed Jan 22 11:59:55 2020, 美东)

昨天去一保险公司面试DA,被3个SQL DEVELOPERDBA 围剿,问一大堆技术问题,还要当
场写CODE.其中一题是:
Write a SQL Function, input data is  date of birth then Function should
return a integer current Age.

这题看似简单,但算的方法和公式有多种,算出结果也不一样,比如,如果你3/01/
2020 是你的20岁生日,那么今天1/22/2020 你是19 岁还是20 岁? 如果12/1/2019 是
你20 岁生日,那今天1/22/2020你是20 岁还是21 岁?
这是保险公司精算师通常要写的Issue Age 公式,看看那位大神能写出最正确保险公司
要SQL Function?
--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 146.]

 
TheMatrix
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 2 ]

发信人: TheMatrix (TheMatrix), 信区: Database
标  题: Re: SQL OnSite 试题one
发信站: BBS 未名空间站 (Wed Jan 22 12:33:02 2020, 美东)

sql server有datediff函数,先把这个写出来就差不多了。

【 在 river08 (sh) 的大作中提到: 】
: 昨天去一保险公司面试DA,被3个SQL DEVELOPERDBA 围剿,问一大堆技术问题,还要当
: 场写CODE.其中一题是:
: Write a SQL Function, input data is  date of birth then Function should
: return a integer current Age.
: 这题看似简单,但算的方法和公式有多种,算出结果也不一样,比如,如果你3/01/
: 2020 是你的20岁生日,那么今天1/22/2020 你是19 岁还是20 岁? 如果12/1/2019 是
: 你20 岁生日,那今天1/22/2020你是20 岁还是21 岁?
: 这是保险公司精算师通常要写的Issue Age 公式,看看那位大神能写出最正确保险公司
: 要SQL Function?




--
☆ 发自 iPhone 买买提 1.24.11
--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 2607:fb90:b639:]

 
river08
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 3 ]

发信人: river08 (sh), 信区: Database
标  题: Re: SQL OnSite 试题one
发信站: BBS 未名空间站 (Thu Jan 23 13:27:12 2020, 美东)

DateDiff only for start 后面还差很多,可以很简单,也可以很复杂

【 在 TheMatrix (TheMatrix) 的大作中提到: 】
: sql server有datediff函数,先把这个写出来就差不多了。



--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 146.]

 
TheMatrix
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 4 ]

发信人: TheMatrix (TheMatrix), 信区: Database
标  题: Re: SQL OnSite 试题one
发信站: BBS 未名空间站 (Thu Jan 23 22:27:08 2020, 美东)


说清楚要求就能做。

【 在 river08 (sh) 的大作中提到: 】
: DateDiff only for start 后面还差很多,可以很简单,也可以很复杂





--
☆ 发自 iPhone 买买提 1.24.11
--
※ 修改:·TheMatrix 於 Jan 23 22:27:36 2020 修改本文·[FROM: 50.]
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 50.]

 
Rolling
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 5 ]

发信人: Rolling (A Rolling Stone), 信区: Database
标  题: Re: SQL OnSite 试题one
发信站: BBS 未名空间站 (Fri Jan 24 00:15:12 2020, 美东)

Current year - birth year
Expected error is half year. That is it.


【 在 TheMatrix(TheMatrix) 的大作中提到: 】
<br>: 说清楚要求就能做。
<br>
--
※ 来源:· 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 73.]

 
xiejing119
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 6 ]

发信人: xiejing119 (), 信区: Database
标  题: Re: SQL OnSite 试题one
发信站: BBS 未名空间站 (Fri Jan 24 13:08:49 2020, 美东)

简单回复下MySQL解决方案。period_diff返回当前日期和生日之间的月数之差,除以12
变成年,求floor留整即可。当前月是否是出生月,如果是,比较当前日期是否小于出
生之日,如果是就是说未到当前整数年龄,减一即可。以下是SQL实现,function的话
放进function定义,return @age即可。

MySQL:
/*
set @birthday:='2001-01-25'; -- '2001-01-24'

select @age:=floor(period_diff(date_format(current_date,'%Y%m'),date_format(
@birthday,'%Y%m'))/12);
select @age:[email protected] from dual where month(current_date)=month(@birthday) and
day(current_date)<day(@birthday);

select @age;
*/
--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 64.]

 
river08
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 7 ]

发信人: river08 (sh), 信区: Database
标  题: Re: SQL OnSite 试题one
发信站: BBS 未名空间站 (Fri Jan 24 16:33:21 2020, 美东)

我想你的思路是对的,有一个减1 还是减0 的问题我都没想清楚。
【 在 xiejing119 () 的大作中提到: 】
: 简单回复下MySQL解决方案。period_diff返回当前日期和生日之间的月数之差,除以
12
: 变成年,求floor留整即可。当前月是否是出生月,如果是,比较当前日期是否小于出
: 生之日,如果是就是说未到当前整数年龄,减一即可。以下是SQL实现,function的话
: 放进function定义,return @age即可。
: MySQL:
: /*
: set @birthday:='2001-01-25'; -- '2001-01-24'
: select @age:=floor(period_diff(date_format(current_date,'%Y%m'),date_
format(
: @birthday,'%Y%m'))/12);
: select @age:[email protected] from dual where month(current_date)=month(@birthday)
and
: ...................



--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 146.]

 
yisong928
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 8 ]

发信人: yisong928 (松林物语), 信区: Database
标  题: Re: SQL OnSite 试题one
发信站: BBS 未名空间站 (Fri Jan 24 18:01:19 2020, 美东)

TSql:

Create Function Get_Age (@Birth Date)
RETURNS INT
As
BEGIN
    Declare @Age INT
    Set @Age = DateDiff(yyyy,@Birth, GetDate() -
                       IIF(Month(GetDate())<Month(@Birth),1,
                       IIF(Month(GetDate())=Month(@Birth) And
                           Day(GetDate())<Day(@Birth),1,0))
    RETURN @Age
END
--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 96.]

 
atuma
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 9 ]

发信人: atuma (atuma), 信区: Database
标  题: Re: SQL OnSite 试题one
发信站: BBS 未名空间站 (Fri Jan 24 20:57:09 2020, 美东)


【 在 river08 (sh) 的大作中提到: 】
: 昨天去一保险公司面试DA,被3个SQL DEVELOPERDBA 围剿,问一大堆技术问题,还要当
: 场写CODE.其中一题是:
: Write a SQL Function, input data is  date of birth then Function should
: return a integer current Age.
: 这题看似简单,但算的方法和公式有多种,算出结果也不一样,比如,如果你3/01/
: 2020 是你的20岁生日,那么今天1/22/2020 你是19 岁还是20 岁? 如果12/1/2019 是
: 你20 岁生日,那今天1/22/2020你是20 岁还是21 岁?
: 这是保险公司精算师通常要写的Issue Age 公式,看看那位大神能写出最正确保险公司
: 要SQL Function?



--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 75.]

 
atuma
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 10 ]

发信人: atuma (atuma), 信区: Database
标  题: Re: SQL OnSite 试题one
发信站: BBS 未名空间站 (Fri Jan 24 20:57:47 2020, 美东)

请问你应聘的这个职位pay range是多少?


【 在 river08 (sh) 的大作中提到: 】
: 昨天去一保险公司面试DA,被3个SQL DEVELOPERDBA 围剿,问一大堆技术问题,还要当
: 场写CODE.其中一题是:
: Write a SQL Function, input data is  date of birth then Function should
: return a integer current Age.
: 这题看似简单,但算的方法和公式有多种,算出结果也不一样,比如,如果你3/01/
: 2020 是你的20岁生日,那么今天1/22/2020 你是19 岁还是20 岁? 如果12/1/2019 是
: 你20 岁生日,那今天1/22/2020你是20 岁还是21 岁?
: 这是保险公司精算师通常要写的Issue Age 公式,看看那位大神能写出最正确保险公司
: 要SQL Function?



--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 75.]

 
river08
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 11 ]

发信人: river08 (sh), 信区: Database
标  题: Re: SQL OnSite 试题one
发信站: BBS 未名空间站 (Mon Jan 27 10:54:27 2020, 美东)

这个可能比较清楚:
CREATE FUNCTION [dbo].[udfGetAge](@DateOfBirth DATETIME)
RETURNS SMALLINT
AS
BEGIN
DECLARE @Age SMALLINT
SET @Age =(DATEDIFF(YY, @DateOfBirth, GETDATE())-
(CASE
WHEN GETDATE() >= DATEADD(YY, DATEDIFF(YY, @DateOfBirth, GETDATE()), @
DateOfBirth) THEN 0
ELSE 1
END))
RETURN @Age
END;
--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 146.]

[分页:1 ]
[快速返回] [ 进入数据库讨论区] [返回顶部]
回复文章
标题:
内 容:

未名交友
将您的链接放在这儿

友情链接


 

Site Map - Contact Us - Terms and Conditions - Privacy Policy

版权所有,未名空间(mitbbs.com),since 1996