leetcode-mysql 2021-04-30
发布日期:2021-05-07 05:14:52 浏览次数:42 分类:精选文章

本文共 2869 字,大约阅读时间需要 9 分钟。

来源:  &  【侵删】

 

again (shame on me)最近两天的事情有点多,暂时经常练习了但是没有将对应的内容搬到这里来;

ExampleA:()

用户表: Users

+---------------+---------+| Column Name   | Type    |+---------------+---------+| user_id       | int     || name          | varchar || mail          | varchar | +---------------+---------+user_id (用户 ID)是该表的主键。这个表包含用户在某网站上注册的信息。有些邮箱是无效的。

写一条 SQL 语句,查询拥有有效邮箱的用户。

有效的邮箱包含符合下列条件的前缀名和域名:

前缀名是包含字母(大写或小写)、数字、下划线 '_'、句点 '.' 和/或横杠 '-' 的字符串。前缀名必须以字母开头。

域名是 '@leetcode.com' 。
按任意顺序返回结果表。

 

查询格式如下所示:

Users+---------+-----------+-------------------------+| user_id | name      | mail                    |+---------+-----------+-------------------------+| 1       | Winston   | winston@leetcode.com    || 2       | Jonathan  | jonathanisgreat         || 3       | Annabelle | bella-@leetcode.com     || 4       | Sally     | sally.come@leetcode.com || 5       | Marwan    | quarz#2020@leetcode.com || 6       | David     | david69@gmail.com       || 7       | Shapiro   | .shapo@leetcode.com     |+---------+-----------+-------------------------+

结果表:

+---------+-----------+-------------------------+| user_id | name      | mail                    |+---------+-----------+-------------------------+| 1       | Winston   | winston@leetcode.com    || 3       | Annabelle | bella-@leetcode.com     || 4       | Sally     | sally.come@leetcode.com |+---------+-----------+-------------------------+

2 号用户的邮箱没有域名。
5 号用户的邮箱包含非法字符 #。
6 号用户的邮箱的域名不是 leetcode。
7 号用户的邮箱以句点(.)开头。

 

解题思路(mysql的正则 regexp)

select * from users where mail regexp  '^[a-zA-A]+[a-zA-Z0-9_\\./\\-]*@leetcode\\.com$';

 

 

ExampleB:

活动表 Activity:

+--------------+---------+| Column Name  | Type    |+--------------+---------+| player_id    | int     || device_id    | int     || event_date   | date    || games_played | int     |+--------------+---------+表的主键是 (player_id, event_date)。这张表展示了一些游戏玩家在游戏平台上的行为活动。每行数据记录了一名玩家在退出平台之前,当天使用同一台设备登录平台后打开的游戏的数目(可能是 0 个)。

写一条 SQL 查询语句获取每位玩家 第一次登陆平台的日期。

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

Activity 表:

+-----------+-----------+------------+--------------+| player_id | device_id | event_date | games_played |+-----------+-----------+------------+--------------+| 1         | 2         | 2016-03-01 | 5            || 1         | 2         | 2016-05-02 | 6            || 2         | 3         | 2017-06-25 | 1            || 3         | 1         | 2016-03-02 | 0            || 3         | 4         | 2018-07-03 | 5            |+-----------+-----------+------------+--------------+

Result 表:

+-----------+-------------+| player_id | first_login |+-----------+-------------+| 1         | 2016-03-01  || 2         | 2017-06-25  || 3         | 2016-03-02  |+-----------+-------------+

 

解题思路(第一种:窗口函数   第二种:min group by)

select  distinct player_id,min(event_date) over(partition by player_id) as first_login from Activity; 【第一种窗口函数】

select player_id, min(event_date) as first_login from Activity group by player_id; 【min group by】

思考人生中

上一篇:leetcode-mysql 2021-05-01
下一篇:leetcode-mysql 2021-04-29

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2025年04月10日 13时52分34秒