数据库每日一题 --- 第 11 天:合作过至少三次的演员和导演
一、问题描述
ActorDirector 表:
复制代码
写一条 SQL 查询语句获取合作过至少三次的演员和导演的 id 对 (actor_id, director_id)
,输出样例如下面所示:
题目链接:合作过至少三次的演员和导演
二、题目要求
样例
复制代码
考察
复制代码
三、问题分析
这一题题目的要求是求出至少出现合作三次的演员与导演
,我们很自然的就会想到聚合函数分组判断,不然你一行一行筛选太费事,并且不划算。那么什么叫聚合函数
?
group by
语句从英文的字面意义上理解就是根据(by)一定的规则进行分组(Group)
。 作用:通过一定的规则将一个数据集划分成若干个小的区域,然后针对若干个小区域进行数据处理。
而having
就是对于使用group by
语句分组之后的结果,进一步筛选,缩小范围,求出结果。
以这一题举例,我们先通过下面的代码,对actor_id 和 director_id
分类的结果如下:
复制代码
明显只有第一行符号题目的要求,所以我们通过having count(*)>=3
对分组之后的结果,再次筛选,最后只有第一行符合要求,我们就输出第一行就行了。
四、编码实现
复制代码
五、测试结果
版权声明: 本文为 InfoQ 作者【知心宝贝】的原创文章。
原文链接:【http://xie.infoq.cn/article/cb40e1616a56b07b133d5904b】。文章转载请联系作者。
评论