喜欢我的都关注我了~
今天早晨,我正在看文献,某管理科室的领导过来找我……
Q
A
&
小王,我想要点数据?
领导您好,您想要哪方面的数据?
我想让你帮我统计一下今年1月到11月各科室周五入院的患者有多少?
en,额嗯……好的,领导,我想办法,马上处理
有求必应,是大胖玉同志的一贯作风, 说干就干,但你觉得我会怎么做?告诉你吧,我才不会在excel中筛选,然后查看哪些日期是星期五,再从excel中挨个选取……这种方法对于数据量少的还勉强可以,我今天要处理的数据可是有10w+,这么多的数据用excel的筛选根本不好使,累死我也干不完啊。
十年前我刚上班的时候(不好意思,暴露年龄啦!),我曾经开发过病案回收程序,里面涉及到周六周日及法定假日的一个算法,因此,今天早晨人家领导根我说想查询各科室周五入院的人数的时候,我就满口答应了,因为在我心中,已经有了方案,只需要具体写几行代码而已。
有的人喜欢用excel,而我则喜欢SQL,但今天这个活,数据量有点大,如果用excel会有点麻烦,SQL更简单一些,不过既然是学习交流,我今天将两种方法都写出来,供大家参考。
excel中计算星期几的方法:用weekday函数
在空白列输入=weekday(serial_number,[return_type])
如图所示:
我们可以选择返回的参数,通常情况下,我建议选择“2”作为返回的参数,那么结果就是对应的星期几。
但如果遇到暴力的,可能就不是这么规范的书写函数了,可能直接就写成=weekday(serial_numbe)了,那么这个时候的返回值就不是星期几了,而是一个星期的第几天。西方国家(或者说英语国家),他们每周的第一天是星期日,第二天是星期一,以此类推……你懂得。
星期几算完了,下一步开始统计各科室的星期五入院人次,用excel的分类汇总吧,不难,方法略。
☆
SQL大法
来点高大尚的,反正数据也在我的数据库中,这个活,我原本也是想在SQL中直接使用函数的,我也想用excel中的weekday函数,但是SQL server报错 了,没办法,问一下百度大嫂吧,百度大嫂给的建议是用DATENAME(weekday, 日期) ,那就试试吧。此处应该有图,但家里电脑配置太低,没法安装SQL,而且数据在单位了,暂且不放了。贴一下SQL倒是可以的。
SELECT 住院流水号, 姓名, 入院时间, DATENAME(weekday, 入院时间) AS 星期, 出院时间, 出院科室, 住院医师
FROM ba 'ba为病案首页表
WHERE (DATENAME(weekday, 入院时间) = '星期五')
语句一下子就解决了,剩下的问题就好办了,用之前我讲过的语句嵌套,在上面语句的基础上加一层按科室分类汇总的语句就可以查询各科室星期五入院的患者人次了。
我不喜欢墨迹,今天这批数据,数量在11w以上,如果用excel,运算的时候鼠标会变成“忙”的图标,并且转很长时间,excel也会出现假死现象,而我用SQL,几秒钟就可以出结果,并且不会出现excel那样的假死现象。还是跟我一起学SQL吧
领取专属 10元无门槛券
私享最新 技术干货