详解力扣高频SQL50题之1148. 文章浏览 I【入门】

传送门:1148. 文章浏览 I

题目

Views 表:

±--------------±--------+

| Column Name | Type |

±--------------±--------+

| article_id | int |

| author_id | int |

| viewer_id | int |

| view_date | date |

±--------------±--------+

此表可能会存在重复行。(换句话说,在 SQL 中这个表没有主键)

此表的每一行都表示某人在某天浏览了某位作者的某篇文章。

请注意,同一人的 author_id 和 viewer_id 是相同的。

请查询出所有浏览过自己文章的作者。

结果按照作者的 id 升序排列。

查询结果的格式如下所示:

示例 1:

输入:

Views 表:

±-----------±----------±----------±-----------+

| article_id | author_id | viewer_id | view_date |

±-----------±----------±----------±-----------+

| 1 | 3 | 5 | 2019-08-01 |

| 1 | 3 | 6 | 2019-08-02 |

| 2 | 7 | 7 | 2019-08-01 |

| 2 | 7 | 6 | 2019-08-02 |

| 4 | 7 | 1 | 2019-07-22 |

| 3 | 4 | 4 | 2019-07-21 |

| 3 | 4 | 4 | 2019-07-21 |

±-----------±----------±----------±-----------+

输出:

±-----+

| id |

±-----+

| 4 |

| 7 |

±-----+

解析

浏览过自己文章即作者id和浏览id相同,所以我们需要先筛选作者id=浏览id的记录,然后注意到示例表格中有很多重复的作者id,可用distinct或group by去重,最后别忘记按作者id升序。

算法(标准SQL)

查询浏览表,按作者id和浏览id分组,满足作者id=浏览id,按作者id分组和升序,返回作者id。

代码(标准SQL)

sql 复制代码
select author_id as id
from Views
where author_id=viewer_id
group by author_id
order by author_id;
相关推荐
恣艺37 分钟前
LeetCode 127:单词接龙
算法·leetcode·职场和发展
dragoooon341 小时前
[LeetCode]每日温度
算法·leetcode·职场和发展
不愧是你呀2 小时前
Leetcode力扣解题记录--第21题(合并链表)
算法·leetcode·链表
zone_z6 小时前
告别静态文档!Oracle交互式技术架构图让数据库学习“活“起来
数据库·学习·oracle
旧时光巷6 小时前
SQL基础⑭ | 变量、流程控制与游标篇
数据库·sql·学习·mysql·变量·游标·流程控制
尘土哥7 小时前
Mysql 索引下推(Index Condition Pushdown, ICP)详解
sql·mysql
某个默默无闻奋斗的人8 小时前
【矩阵专题】Leetcode48.旋转图像(Hot100)
java·算法·leetcode
Jacob02348 小时前
很多数据分析师写对了 SQL,却忽略了这件更重要的事
后端·sql·数据分析
种树达人8 小时前
数据库常用DDL语言
java·数据库·oracle
Gauss松鼠会9 小时前
华为云DRS实现Oracle到GaussDB数据库迁移的全流程技术方案
数据库·sql·安全·华为云·database·gaussdb