SQL语言 -- DQL

-SQL 14 操作符混合运用

SQL语言 -- DQL_第1张图片

select device_id,gender,age,university,gpa
from user_profile
where (gpa > 3.5
and university = '山东大学')
or (gpa > 3.8
and university = '复旦大学')

and 的优先级 大于 or 括号可省略

- SQL29 计算用户的平均次日留存率
描述
题目:现在运营想要查看用户在某天刷题后第二天还会再来刷题的平均概率。请你取出相应数据。
SQL语言 -- DQL_第2张图片
SQL语言 -- DQL_第3张图片

select (select count(DISTINCT q1.device_id,q1.date)
from question_practice_detail q1
left join question_practice_detail q2
on q1.device_id = q2.device_id
where datediff(q2.date,q1.date)=1) / COUNT(DISTINCT device_id,date) 

from question_practice_detail

分析:题目所说的 — 用户在某天刷题后第二天还会再来刷题的平均概率
数学表达式 用户在某天刷题后第二天还会再来刷题的个数/ 每天上线刷题的用户总数(device_id 去重)

用户在某天刷题后第二天还会再来刷题的个数—使用左连接

连接自表:
连接条件 device_id
筛选条件 datediff(q2.date,q1.date)=1 日期差1
去重( id和date )因为是统计 用户在某天刷题后第二天还会再来刷题的个数

你可能感兴趣的:(sql,数据库,database)