「4月日新计划更文活动」
题目:586. 订单最多的客户
+-----------------+----------+
| Column Name | Type |
+-----------------+----------+
| order_number | int |
| customer_number | int |
+-----------------+----------+
Order_number是该表的主键。
此表包含关于订单ID和客户ID的信息。
需求
编写一个SQL查询,为下了 最多订单 的客户查找 customer_number 。 测试用例生成后, 恰好有一个客户 比任何其他客户下了更多的订单。
解析
# Write your MySQL query statement below
select customer_number from Orders group by customer_number order by count(customer_number) desc limit 1
题目:511. 游戏玩法分析 I
+--------------+---------+
| Column Name | Type |
+--------------+---------+
| player_id | int |
| device_id | int |
| event_date | date |
| games_played | int |
+--------------+---------+
表的主键是 (player_id, event_date)。
这张表展示了一些游戏玩家在游戏平台上的行为活动。
每行数据记录了一名玩家在退出平台之前,当天使用同一台设备登录平台后打开的游戏的数目(可能是 0 个)。
需求
写一条 SQL 查询语句获取每位玩家 第一次登陆平台的日期。
解析
select player_id ,min(event_date) as first_login from Activity group by player_id
题目:1890. 2020年最后一次登录
+----------------+----------+
| 列名 | 类型 |
+----------------+----------+
| user_id | int |
| time_stamp | datetime |
+----------------+----------+
(user_id, time_stamp) 是这个表的主键。
每一行包含的信息是user_id 这个用户的登录时间。
需求
编写一个 SQL 查询,该查询可以获取在 2020 年登录过的所有用户的本年度 最后一次 登录时间。结果集 不 包含 2020 年没有登录过的用户。 返回的结果集可以按 任意顺序 排列。
解析
# Write your MySQL query statement below
select user_id , max(time_stamp) as last_stamp from Logins where time_stamp>="2020-00-00 0:00:00" and time_stamp<="2020-12-31 23:59:59" group by user_id
# Write your MySQL query statement below
select user_id , max(time_stamp) as last_stamp from Logins where year(time_stamp)=2020
group by user_id
题目:1741. 查找每个员工花费的总时间
+-------------+------+
| Column Name | Type |
+-------------+------+
| emp_id | int |
| event_day | date |
| in_time | int |
| out_time | int |
+-------------+------+
(emp_id, event_day, in_time) 是这个表的主键。
该表显示了员工在办公室的出入情况。
event_day 是此事件发生的日期,in_time 是员工进入办公室的时间,而 out_time 是他们离开办公室的时间。
in_time 和 out_time 的取值在1到1440之间。
题目保证同一天没有两个事件在时间上是相交的,并且保证 in_time 小于 out_time。
需求
编写一个SQL查询以计算每位员工每天在办公室花费的总时间(以分钟为单位)。 请注意,在一天之内,同一员工是可以多次进入和离开办公室的。 在办公室里一次进出所花费的时间为out_time 减去 in_time。
解析
# Write your MySQL query statement below
select event_day as day, emp_id,sum(out_time- in_time ) as total_time from Employees
group by event_day ,emp_id
知识点
sum 函数
- 定义:SUM()函数用于计算指定列中所有数值的总和
- 语句格式:栗子🌰1741
sum(out_time- in_time ) - 注意⚠️:SUM()函数只能用于数值列,如果列中的数据类型不是数值类型,需要进行强制类型转换
max 函数
- 定义:返回指定列中的最大值(一般用来找到最大数值或日期值)
- 语句格式:栗子🌰1890
max(time_stamp) - 注意⚠️:max()函数忽略列值为NULL的行,并且如果在用于文本数据时,如果数据按相应的列排序,则MAX()返回最后一行
min 函数
- 定义:返回指定列的最小值
- 语句格式:栗子 🌰
min(event_date) - 注意⚠️:MIN()函数忽略列值为NULL的行,并且如果在用于文本数据时,如果数据按相应的列排序,则MIN()返回最前面的行
year 函数
- 定义:YEAR()函数用于从日期或日期/时间表达式中提取年份。
- 语句格式:栗子🌰1890
year(time_stamp)=2020 - 注意⚠️:YEAR()函数仅适用于日期或日期/时间数据类型,如果列的数据类型不是这些类型,则需要进行类型转换
count 函数
- 定义:对表中行的数据进行计数(不管列表中包含的是NULL值还是非空值)(不忽略空值)
- 语句格式:
SELECT COUNT(字段名) FROM 数据表 - 注意⚠️:如果使用COUNT()函数计算表中行数,可以使用“”代替列名,但如果使用COUNT()函数计算特定列中的行数,则不能使用“”,而必须使用列名。