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;

浙公网安备 33010602011771号