mysql5资源共享

 找回密码
 立即注册
查看: 584|回复: 8

[MS-SQL Server] 【疑难】SQL面试题,难度感觉不大,就1题,5分钟能写留下,不能写走人,走了一星期了

[复制链接]

1

主题

3

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2019-7-20 16:44:46 | 显示全部楼层 |阅读模式
题目只有一题,5分钟能写留下面试,不能写就直接让我走人,HR当场计时,一看感觉很简单,但没有按要求实现.题目大意如下两表users表和money表,只能用一条SQL计算每个用户每个月[不确定有几个月]的消费金额,得出result表所示结果.要求使用存储过程,

3193.png

3193.png



我当时想写的是
selecta.username'用户名',ifnull(b.ye,0)as'一月份',ifnull(b2.ye,0)as'二月份',ifnull(b3.ye,0)as'三月份'fromusersa                                                                                                       
LEFTJOINmoneybona.userid=b.useridandb.month='一月份'                                                                                                       
LEFTJOINmoneyb2ona.userid=b2.useridandb2.`month`='二月份'                                                                                                       
LEFTJOINmoneyb3ona.userid=b3.useridandb3.`month`='三月份'        但不符合要求,如果使用存储过程,一个星期了都没写出来,头发白了自尊心受挫了,谁能帮帮我!

回复

使用道具 举报

1

主题

8

帖子

21

积分

新手上路

Rank: 1

积分
21
发表于 2019-7-20 19:47:37 | 显示全部楼层
这个要用行变列的语法pivot这个东东
回复

使用道具 举报

1

主题

8

帖子

21

积分

新手上路

Rank: 1

积分
21
发表于 2019-7-20 20:18:15 | 显示全部楼层
select*
from
(
SELECTa.userid,b.username,[month],sum(ye)asyefrom[money]aleftjoin[users]bona.userid=b.useridgroupbya.userid,b.username,a.[month]
)t
pivot(sum(ye)fort.[month]in([一月份],[二月份],[三月份],[四月份]))asourpivot
orderbyuserid
回复

使用道具 举报

4

主题

452

帖子

940

积分

高级会员

Rank: 4

积分
940
发表于 2019-7-20 22:06:24 | 显示全部楼层
应该是mysql动态拼接sql结合casewhen实现
回复

使用道具 举报

36

主题

2968

帖子

6024

积分

论坛元老

Rank: 8Rank: 8

积分
6024
发表于 2019-7-20 22:31:32 | 显示全部楼层
MySQL没有pivot这样的语法。

可以写成如下语法
sum(casewhenyue=一月thennumelse0end)
回复

使用道具 举报

4

主题

452

帖子

940

积分

高级会员

Rank: 4

积分
940
发表于 2019-7-21 11:45:31 | 显示全部楼层
查了下mysql8.0貌似都没pivot
回复

使用道具 举报

6

主题

348

帖子

724

积分

高级会员

Rank: 4

积分
724
发表于 2019-7-21 12:41:33 | 显示全部楼层
重点是给多少钱,钱少了估计五个小时也写不出,钱到位了,分分钟搞定
回复

使用道具 举报

1

主题

3

帖子

9

积分

新手上路

Rank: 1

积分
9
 楼主| 发表于 2019-7-23 14:41:28 | 显示全部楼层
都没回到点上,数据库是指定了mysql,要求使用存储过程……
回复

使用道具 举报

1

主题

3

帖子

9

积分

新手上路

Rank: 1

积分
9
 楼主| 发表于 2019-7-23 14:42:46 | 显示全部楼层
不好意思,忘了说明数据库类型了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|mysql5.com Inc. ( 闽ICP备17002856号-1 )

GMT+8, 2019-11-18 13:46 , Processed in 0.063397 second(s), 21 queries .

Powered by MySQL5.com X3.4

© 2003-2019 MySQL5.com.

快速回复 返回顶部 返回列表