7、8.计算函数

7-1.1141.查询近30天活跃用户数

 i.使用DATEDIFF

   COUNT里使用的是user_id而不是session_id,因为要查询的是用户数,虽然说每个 session_id 只属于一个用户,但是每个用户可能拥有多个session_id 

   DATEDIFF除了限制<30,还要限制>=0不然会查询到07-27之后的数据

1 # Write your MySQL query statement below
2 SELECT DISTINCT
3    activity_date day,COUNT(DISTINCT user_id) active_users
4 FROM
5    Activity
6 WHERE
7    DATEDIFF('2019-07-27',activity_date) < 30 AND DATEDIFF('2019-07-27',activity_date) >= 0
8 GROUP BY activity_date;

ii.使用between and

1 # Write your MySQL query statement below
2 SELECT DISTINCT
3    activity_date day,COUNT(DISTINCT user_id) active_users
4 FROM
5    Activity
6 WHERE
7    activity_date BETWEEN '2019-06-28' AND '2019-07-27'
8 GROUP BY activity_date;

 

7-2.1693.每天的领导和合伙人

1 # Write your MySQL query statement below
2 SELECT
3     date_id,make_name,
4     COUNT(DISTINCT lead_id) unique_leads,
5     COUNT(DISTINCT partner_id) unique_partners
6 FROM
7    DailySales
8 GROUP BY make_name,date_id;

 

7-3.1729.求关注者的数量

1 # Write your MySQL query statement below
2 SELECT
3    user_id,COUNT(DISTINCT follower_id) followers_count
4 FROM
5    Followers
6 GROUP BY user_id;

 

8-1.586.订单最多的客户

1 # Write your MySQL query statement below
2 SELECT
3    customer_number
4 FROM
5    Orders
6 GROUP BY customer_number
7 ORDER BY COUNT(*) DESC
8 LIMIT 1;
9    

进阶:最多订单的客户不止一个(HAVING辅助)

i.排序+LIMIT

 1 # Write your MySQL query statement below
 2 SELECT
 3    customer_number
 4 FROM
 5    Orders
 6 GROUP BY customer_number
 7 HAVING COUNT(*) = 
 8      (SELECT COUNT(*) 
 9       FROM Orders 
10       GROUP BY customer_number 
11       ORDER BY COUNT(*) DESC 
12       LIMIT 1);
13    

ii.直接>=ALL

 1 # Write your MySQL query statement below
 2 SELECT
 3    customer_number
 4 FROM
 5    Orders
 6 GROUP BY customer_number
 7 HAVING COUNT(*) >= ALL 
 8      (SELECT COUNT(*) 
 9       FROM Orders 
10       GROUP BY customer_number);
11    

 

8-2.511.游戏玩法分析I

MIN函数也可用于 日期

1 # Write your MySQL query statement below
2 SELECT
3    player_id,MIN(event_date) first_login
4 FROM
5    Activity
6 GROUP BY player_id; 
7  

 

8-3.1890.2020年最后一次登录

year(time_stamp) <==>  time_stamp between '2020-01-01'and'2021-01-01'

'2020-01-01'and'2021-01-01'  不能是 '2020-01-01'and'2020-12-31',因为2020-12-31默认截止到2020-12-31的0点

1 # Write your MySQL query statement below
2 SELECT
3    user_id,MAX(time_stamp) last_stamp
4 FROM
5    Logins
6 WHERE year(time_stamp) = '2020' //time_stamp between '2020-01-01'and'2021-01-01'
7 GROUP BY user_id;

 

8-4.1741.查找每个员工花费的总时间

分组统计,SUM函数

1 # Write your MySQL query statement below
2 SELECT 
3     event_day day,emp_id,SUM(out_time - in_time) total_time
4 FROM
5     Employees
6 GROUP BY event_day,emp_id;

 

posted @ 2022-08-09 17:48  balabalahhh  阅读(60)  评论(0)    收藏  举报