携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第35天,点击查看活动详情
一、题目
表: Followers
+-------------+------+
| Column Name | Type |
+-------------+------+
| user_id | int |
| follower_id | int |
+-------------+------+
(user_id, follower_id) 是这个表的主键。
该表包含一个关注关系中关注者和用户的编号,其中关注者关注用户。
写出 SQL 语句,对于每一个用户,返回该用户的关注者数量。
按 user_id 的顺序返回结果表。
查询结果的格式如下示例所示。
示例 1:
输入:
Followers 表:
+---------+-------------+
| user_id | follower_id |
+---------+-------------+
| 0 | 1 |
| 1 | 0 |
| 2 | 0 |
| 2 | 1 |
+---------+-------------+
输出:
+---------+----------------+
| user_id | followers_count|
+---------+----------------+
| 0 | 1 |
| 1 | 1 |
| 2 | 2 |
+---------+----------------+
解释:
0 的关注者有 {1}
1 的关注者有 {0}
2 的关注者有 {0,1}
- 来源:力扣(LeetCode)
- 链接:leetcode.cn/problems/fi…
- 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
二、 解题思路
创建数据库
根据题意创建数据库并填充数据
CREATE TABLE IF NOT EXISTS Followers(
user_id INT,
follower_id INT
);
INSERT INTO Followers VALUES
(0,1),
(1,0),
(2,0),
(2,1);
解题
本题比较简单
- 根据题意设置以用户id的分组
- 使用count计算关注者的数量
- 在根据题意对用户id进行排序
- 最后执行语句
SELECT user_id, COUNT(follower_id) AS followers_count
FROM Followers
GROUP BY user_id
ORDER BY user_id;
- 显示结果
三、执行语句
测试结果
四、总结
count
- COUNT() 是一个聚合函数返回指定匹配条件的行数。常用来统计表中数据,全部数据,不为NULL数据,或者去重数据。
- count(1): 计算不为NULL的记录
- count(*): 计算所有的记录包括null
- count(字段): 统计该字段不为null的记录
- count(distinct 字段): 统计该字段去重后且不为null的记录
group by
group by是用于分组查询的关键字,一般于sum(),avg(),count(),max(),min()聚合函数一起使用。一般只要使用了group by,那么select后边一般会出现几个聚合函数其中的一个或多个。
haveing
haveing用于筛选分组活的各组数据,对通过where条件语句,group by分组之后的结果再进一步的区分
haveing后可以根count()或者sum() 之类的聚合函数。