力扣-求关注者的数量

news/2024/11/8 3:15:29/

大家好,我是空空star,本篇带大家了解一道简单的力扣sql练习题。

文章目录

  • 前言
  • 一、题目:1729. 求关注者的数量
  • 二、解题
    • 1.正确示范①
      • 提交SQL
      • 运行结果
    • 2.正确示范②
      • 提交SQL
      • 运行结果
    • 3.正确示范③
      • 提交SQL
      • 运行结果
    • 4.正确示范④
      • 提交SQL
      • 运行结果
    • 5.正确示范⑤
      • 提交SQL
      • 运行结果
  • 总结


前言


一、题目:1729. 求关注者的数量

表: Followers

+-------------+------+
| Column Name | Type |
+-------------+------+
| user_id     | int  |
| follower_id | int  |
+-------------+------+

(user_id, follower_id) 是这个表的主键。
该表包含一个关注关系中关注者和用户的编号,其中关注者关注用户。
写出 SQL 语句,对于每一个用户,返回该用户的关注者数量。
按 user_id 的顺序返回结果表。
查询结果的格式如下示例所示。

输入:
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}

二、解题

1.正确示范①

提交SQL

select user_id,count(1) followers_count
from Followers
group by user_id
order by user_id;

运行结果

2.正确示范②

提交SQL

select user_id,count(*) followers_count
from Followers
group by user_id
order by user_id;

运行结果

3.正确示范③

提交SQL

select user_id,count(follower_id) followers_count
from Followers
group by user_id
order by user_id;

运行结果

4.正确示范④

提交SQL

select user_id,sum(1) followers_count
from Followers
group by user_id
order by user_id;

运行结果

5.正确示范⑤

提交SQL

select distinct user_id,
sum(1) over(partition by user_id) followers_count
from Followers
order by user_id;

运行结果


总结

正确示范①思路:
采用count(1)
先按用户id分组,再用count(1)统计出关注者的数量,再按用户id顺序;
正确示范②思路:
采用count(*)
先按用户id分组,再用count(*)统计出关注者的数量,再按用户id顺序;
正确示范③思路:
采用count(follower_id)
先按用户id分组,再用count(follower_id)统计出关注者的数量,再按用户id顺序;
正确示范④思路:
采用sum(1)
先按用户id分组,再用sum(1)统计出关注者的数量,再按用户id顺序;
正确示范⑤思路:
采用sum(1) over(partition by user_id)
通过partition by分组,用sum(1)统计出关注者的数量,用distinct去重后,再按用户id顺序。


http://www.ppmy.cn/news/31641.html

相关文章

互联网摸鱼日报(2023-03-10)

互联网摸鱼日报(2023-03-10) InfoQ 热门话题 国内首例社区双栈Istio方案落地经验,实现代码已开源 元年科技李彤:企业数字化切入点有三,单业务场景创新、技术平台重建或数据能力建设 物理界限日益模糊,制…

移除元素问题解决方法------LeetCode-OJ题

问题: 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 要求: 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改…

关于长连接服务器和客户端之间要加入心跳的一些讨论

在之前的章节里深入浅出TCPIP之深入浅出TCPIP之TCP重传机制 我们都知道了TCPIP协议栈有个默认的TCP心跳机制,这个心跳机制是和socket绑定的,可以对指定的套接字开启协议栈的心跳检测机制。默认情况下,协议栈的心跳机制对socket套接字是关闭的,如果要使用需要人为开启的。 比…

腾讯混元AI大模型训练技术揭秘——太极AngelPTM

编者按:秉承“技术提效”理念,腾讯广告不断探索技术能力边界,全面升级广告系统,基于“一大平台、两大模型”持续精进创新研发,提升投放效率与投放效果,助力广告主实现高效的全域经营与生意增长。本篇文章是…

cushy-serial 一个轻量级Python serial库

本文自笔者博客: https://www.blog.zeeland.cn/archives/rgoihgxcoci3 简介 cushy-serial是一个轻量级的Serial框架,初衷是希望使Serial编程变得更加简单、快捷,因此,相较于传统的pyserial,该框架可以更加快速地构建起一个serial…

[Java Web]Request对象 | 超1w字带你熟悉Servlet中的request请求

⭐作者介绍:大二本科网络工程专业在读,持续学习Java,输出优质文章 ⭐所属专栏:Java Web ⭐如果觉得文章写的不错,欢迎点个关注😉有写的不好的地方也欢迎指正,一同进步😁 目录 Reque…

高速PCB设计指南系列(三)

第一篇 高密度(HD)电路的设计 本文介绍,许多人把芯片规模的BGA封装看作是由便携式电子产品所需的空间限制的一个可行的解决方案,它同时满足这些产品更高功能与性能的要求。为便携式产品的高密度电路设计应该为装配工艺…

单线程的 javascript 如何管理任务

要怎么理解 JavaScript 是单线程这个概念呢?大概需要从浏览器来说起。 JavaScript 最初被设计为浏览器脚本语言,主要用途包括对页面的操作、与浏览器的交互、与用户的交互、页面逻辑处理等。如果将 JavaScript 设计为多线程,那当多个线程同时…