近期,给自己制订了一项学习计划。学习SQL,其实接触SQL那也是大学时期的事情,当时学习的是Access数据库,语句基本的也都没有忘excel合并字符串,所以对于基本的SQL入门来说,可能也相对快一些。
另外,上个月的时候,得俊红老师的小蓝书《对比Excel,学习SQL数据分析》一书。作为入门教程感觉极佳,便萌生了再次学习SQL的念头。同时,自己也觉得是时候将以前自己的知识进行强化了,也作为一种兴趣爱好而已。
虽然作为一名人力资源从业者,况且还是个文科生,但是对于Excel以及计算机的兴趣丝毫没有减弱,这并不影响我学习代码。
此外本人的新书《Excel人力资源管理实战宝典》也即将快要和广大的读者见面了,预计8月底吧。
所以,边学习SQL边更新公众号excel合并字符串,后面将会对比Power Query,Power pivot学习。也希望广大的读者们指正批评。如有不当的地方,请予以指明。
本期Excel函数:Textjoin
本期SQL函数:group_concat
源数据如下:
结果如下:
在Excel中这个问题要使用到数组公式,即:
在H5单元格中输入以下公式,按键完成。
{=TEXTJOIN(",",1,IF(G5=Sheet1!$B$2:$B$15,Sheet1!$D$2:$D$15,""))}
在I5单元格中输入以下公式,按Enter键完成。
=ROUND(AVERAGEIF($B$2:$B$15,G5,$D$2:$D$15),2)
在SQL中这个问题解决也是相对比较容易的,分组合并即可。代码如下:
select
class,
group_concat(score) as score_concat,
round(avg(score), 2)as avg_score
from
mydata.mytable_class
group by
class
结果如下:
在上述有代码里面,使用到了最重要的一个SQL函数是group_concat函数。
这里省略了分隔符,默认为逗号,也可以指定分隔符。如下代码所示:
select
class,
group_concat(score separator ";") as score_concat,
round(avg(score), 2)as avg_score
from
mydata.mytable_class
group by
class
结果如下:
除了指定分隔符外,还可以对合并的数字进行排序。如下代码所示:
select
class,
group_concat(score
order by
score separator ";") as score_concat,
round(avg(score), 2)as avg_score
from
mydata.mytable_class
group by
class
结果如下:
当然还可以给结果加上序号,如下所示:
select
(@i := @i + 1) as id,
class,
group_concat( score
order by
score separator ";") as score_concat,
round(avg(score), 2)as avg_score
from
mydata.mytable_class,
(
select
@i := 0) as it
group by
class
结果如下:
关于后面的在SQL中使用变量的方法在以后的帖子中会有相关的案例与说明。
限 时 特 惠: 本站每日持续更新海量各大内部创业教程,加站长微信免费获取积分,会员只需38元,全站资源免费下载 点击查看详情
站 长 微 信: thumbxmw