首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

游戏行业实战案例1:日活跃率分析

游戏开服前两天(2022-08-13至2022-08-14)的角色登录和登出日志如下 一天中,玩家可以多次登录登出游戏,请使用SQL分析出以下业务问题: 分析开服首日(2022-08-13),游戏的...根据题意可知,当日即为开服首日(2022-08-13),因此,我们要用where子句筛选出日期为“2022-08-13”的数据: where 日期 = '2022-08-13' 至少登录过游戏一次表示登录过游戏即可...,“登录日志”记录玩家的登录信息,玩家有登录过游戏就会有记录。...因此,计算开服次日仍登录的活跃玩家数的完整SQL语句的书写方法为: select count(distinct 角色id) as 次日仍登录的活跃玩家数 from 登录日志 where 日期 = '2022...计算开服首日(2022-08-13)的活跃玩家总数的SQL的书写方法如下: select count(distinct 角色id) from 登录日志 where 日期 = '2022-08-13'

63630

sql学习

SQL SELECT DISTINCT语句 关键词DISTINCT用于返回唯一不同的值 语法:SELECT DISTINCT 列名称 FORM 表名称 SQL WHERE子句 where子句同于规定选择的标准...SQL AND & OR 运算符 AND和or用于基于一个以上的条件对记录进行过滤 在一个WHERE子句中将两个或多个条件结合起来。 也可以将AND和OR使用圆括号结合起来组成复杂表达式。...SQL ORDER BY子句 ORDER BY子句用于根据指定的列队结果集进行排序,默认按照升序对记录进行排序,如果要按照降序对记录进行排序,使用DESC关键字。...语法: DELETE FROM 表名称 WHERE 列名称 = 值 SQL高级教程 SQL TOP子句 TOP子句用于规定要返回的记录的数目,这条语句对于拥有数千条记录的大型表而言,是很有用的。...GROUP BY() 用于结合合计函数,根据一个或多个列对结果集进行分组。 HAVING子句 当WHERE关键字无法和合计函数一起使用时,使用HAVING子句。

4.7K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    游戏行业实战案例2:玩家等级

    “登录日志”记录各玩家的登录时间和登录时的角色等级。 “登出日志”记录各玩家的登出时间和登出时的角色等级。 其中,“角色id”字段唯一识别玩家。...游戏开服前两天(2022-08-13至2022-08-14)的角色登录和登出日志如下 一天中,玩家可以多次登录登出游戏,请使用SQL分析出以下业务问题: 玩家在开服首日(2022-08-13)等级分布情况...因此,在查询时,我们需要从表中筛选出2022-08-13的数据,即: where 日期 = '2022-08-13' 那么从哪个表中取数进行筛选呢?...根据题意:如玩家没有登出日志,则使用登录日志的等级信息,也就是说我们既需要从“登出日志”取数,也需要从“登录日志”取数。那么,我们可以把“登出日志”和“登录日志”两张表联结成一张表使用。...SQL的书写方法: select * from b where 排名 = 1; 将临时表b的具体SQL语句带入,完整的SQL的书写方法: select * from (select *,rank() over

    1K30

    数据库相关

    日期的计算操作和日期函数的使用 1、取得当前日期:利用sysdate伪列取得当前时间 select sysdate from dual;20-8月 -16 默认情况下只包含了年月日三个内容,可以通过修改默认的语言方式来修改日期格式...日期的算数运算: 若干天前的日期:日期-数字=日期 select sysdate-3 from dual; 17-8月 -16 若干天后的日期:日期+数字=日期 select sysdate...()函数 select last_day(sysdate) from dual; 本月的最后一天31-8月 -16 查询当月倒数第三天雇佣的 select ename from emp where...; 按照sql语句的执行步骤编写:FROM WHERE SELECT 范例:查出每个雇员的编号,姓名,雇佣日期,基本工资,工资等级 1、确定所需要的表: emp:雇员的编号,姓名,雇佣日期,基本工资...范例:查询公司之中工资最低的雇员的完整信息 select * from emp where sal=(select min(sal) from emp); 根据返回的数据类型一共分为四种: 单行单列

    1.9K50

    【MySQL】MySQL数据库的进阶使用

    update用于更改表中某一行或者多行的数据,值得注意的是,在使用update对表中数据进行更新的时候,如果不跟上where子句进行数据筛选的话,则update会对表中所有的行进行某一列字段值的更新,因为...牛客:SQL201 查找薪水记录超过15条的员工号emp_no以及其对应的记录次数t 牛客:获取所有部门当前(dept_manager.to_date=‘9999-01-01’)manager的当前(...日期类型一般可以用在记录生日的字段,date类型可以存储日期,time类型可以存储时间,datetime类型可以存储日期+时间数据。...mod用于取模,除了正整数能取模之外,负数也可以取模,负数取模从形式上来看分两种情况,一种是第一个参数是负数,一种是第二个参数是负数,但实际计算的时候,我们可以通过扩大第二个参数整数倍的方式然后再加上一个数等于第一个参数...通过嵌入到其他sql语句中的select语句的返回结果,子查询又可以细分为单行子查询,多行子查询,多列子查询,子查询除了可以用在where子句充当筛选条件外,还可以用在from子句充当临时表,作笛卡尔积

    35120

    SQL Server T-SQL高级查询

    from student s, classes c where cid = c.id; # rank函数函数 根据排序子句给出递增的序号,但是存在并列并且跳空 顺序递增 select id, name...cid = c.id; # dense_rank函数 根据排序子句给出递增的序号,但是存在并列不跳空 不跳过,直接递增 select s.id, s.name, cid, c.name, dense_rank...));--当前秒数 select day(getDate());--返回当前日期天数 select day('2011-06-30');--返回当前日期天数 select month(getDate()...select @@error;--T-SQL的错误号 select @@procid; 8、 配置函数 set datefirst 7;--设置每周的第一天,表示周日 select @@datefirst...lock_timeout;--返回当前会话的当前锁定超时设置(毫秒) select @@max_connections;--返回SQL Server 实例允许同时进行的最大用户连接数 select @@

    3.9K50

    SQL 计算公司的期初资产

    : 从第一个核算周期算起,每个公司每个季度都会有一条核算记录,不会出现漏掉的情况; 每个季度的最后一天作为核算日期,即核算日在每一年里都是固定的,分别是 3月31日、6月30日、9月30日、12月31日...群友希望在 assets 表的基础上,增加一列用于展示期初资产。期初资产的计算规则是:当前季度的期初资产 = 上一年最后一个季度的总资产。...: 找出每个公司每年的期末资产,即每个公司的每年最后一个季度的记录; 利用日期函数,将当前的核算日期倒推出上一年的最后一天,再结合公司名称就能在步骤 1 的临时的结果集获取到期初资产。...SQL 已经把条件 rn = 1 放到 LEFT JOIN 的后面,而不是放在 WHERE 子句里。...opening_assets FROM assets a 子查询里面的条件 b.check_day = CONCAT((YEAR(a.check_day) - 1), '-12-31')) 也可以换成其它写法,比如根据当前季度的最后一天日期倒推出去年最后一天的日期

    92720

    todo游戏行业实战案例3:玩家等级停滞率

    “登录日志”记录各玩家的登录时间和登录时的角色等级。 “登出日志”记录各玩家的登出时间和登出时的角色等级。 其中,“角色id”字段唯一识别玩家。...游戏开服前两天(2022-08-13至2022-08-14)的角色登录和登出日志如下 一天中,玩家可以多次登录登出游戏,请使用SQL分析出以下业务问题: 玩家在开服首日(2022-08-13)的等级停滞率...现在,我们来筛选达到各停留等级下的总人数。 停留等级来自于问题2计算出的结果中,即下表: 我们需要根据这个表中的停留等级进行筛选,如何筛选呢? 可以使用left join联结进行筛选。...left join用于横向联结两个表,联结时以左表为主表,返回左表的所有行,即使右表中没有匹配。...那么,我们在用left join联结后,直接取表c中的停留等级,并取表c中的角色数,表d中的总角色数相除即可,无需将表c和表d中所有列都取出来。

    45730

    SQL命令 WHERE(一)

    描述 可选的WHERE子句可以用于以下目的: 指定限制要返回哪些数据值的谓词。 指定两个表之间的显式连接。 指定基表和另一个表中的字段之间的隐式连接。...WHERE子句最常用于指定一个或多个谓词,这些谓词用于限制SELECT查询或子查询检索到的数据(过滤出行)。...在条件表达式中指定日期或时间时,可能由于SQL模式与日期或时间格式不匹配,或由于无效的日期或时间值而发生错误。 WHERE子句条件表达式必须使用与当前模式相对应的日期或时间格式。...例如,在逻辑模式下,要返回出生日期为2005年的记录,WHERE子句将出现如下:WHERE DOB BETWEEN 59901 AND 60265 当在显示模式下,同样的WHERE子句会出现如下:WHERE...动态SQL查询中的WHERE子句会自动针对空离群值进行优化。 例如,WHERE FavoriteColors IS NULL这样的子句。

    3K20

    OushuDB入门(五)——ETL篇

    这两个表采用整体拉取的方式抽数据。...对于sales_order这个表采用基于时间戳的CDC拉取方式抽数据。这里假设源系统中销售订单记录一旦入库就不再改变,或者可以忽略改变。也就是说销售订单是一个随时间变化单向追加数据的表。...任何一个版本的有效期是一个“左闭右开”的区间,也就是说该版本包含生效日期,但不包含过期日期,而是到过期日期的前一天为止。...DISTINCT ON ( expression [, …] )把记录根据[, …]的值进行分组,分组之后仅返回每一组的第一行。需要注意的是,如果不指定ORDER BY子句,返回的第一条的不确定的。...本示例的时间粒度为每天,所以时间戳只要保留日期部分即可,因此数据类型选为date。这两个字段的初始值是“初始加载”执行日期的前一天。当开始装载时,current_load设置为当前日期。

    1.3K20

    常用SQL语句和语法汇总

    扯远了,飞回来~~~ 创建数据库 CREATE DATABASE ; SQL常用规则0 数据库的名称只能使用小写字母 关系数据库以行为单位读写数据 SQL根据功能不同可以分为三类,其中使用最多的是...FROM ; 查询出表中的所有列 SELECT * FROM ; 根据WHERE语句来选择记录 SELECT ,......(对象字符串 FRMO 截取的起始位置 FOR 截取的字符数) UPPER函数(大写转换) UPPER(字符串) CURRENT_DATE函数(当前日期) CURRENT_DATE CURRENT_TIME...函数(当前时间) CURRENT_TIME CURRENT_TIMESTAMP函数(当前日期和时间) CURRENT_TIMESTAMP EXTRACT函数(截取日期元素) EXTRACT(日期元素 FROM...SQL常用规则7 集合运算会除去重复的记录,但可以使用ALL选项,保留重复行 进行联结时需要在FROM子句中使用多张表 进行内联结时必须使用ON子句,并且要书写在FROM 和WHERE之间 使用联结时

    3.1K80

    2-3 T-SQL函数

    系统函数 系统函数用于返回有关SQL Server系统、用户、数据库和数据库对象的信息。系统函数可以让用户在得到信息后,使用条件语句,根据返回的信息进行不同的操作。...日期时间函数 日期和时间函数用于对日期和时间数据进行各种不同的处理和运算,并返回一个字符串、数字值或日期和时间值。...与其他函数一样,可以在SELECT语句的SELECT和WHERE子句以及表达式中使用日期和时间函数,如表2-5所示为日期时间函数的基本内容。...over子句中的order by子句与SQL语句中的order by子句没有任何关系,这两处的order by 可以完全不同,如下面的SQL语句所示:select row_number() over(order...我们看到,如果使用rank函数来生成序号,其中有3条记录的序号是相同的,而第6条记录会根据当前的记录数生成序号,后面的记录依此类推,也就是说,在这个例子中,第6条记录的序号是6,而不是4。

    1.5K10

    oracle的操作

    TO_DATE函数 使用TO_DATE函数将字符转换为日期 TO_DATE(char [, 'fmt'])) 格式控制符 描述 HH,HH12 一天中的第几个小时,12进制表示法...HH24 一天中的第几个小时,取值为00~23 MI 一小时中的分钟 SS 一分钟中的秒 AM 显示上午或下午 4,日期函数 add_months(date_value,...select extract(month from sysdate) "当前月份" from dual; last_day(date_value):返回指定日期中的月份的最后一天的日期 select...三,dual表 Oracle提供的最小的工作表,只有一行一列,具有某些特殊功用途 Oracle提供的最小的表,不论进行何种操作(不要删除记录),它都只有一条记录——'X'。.../SQL数据类型 必须有EXECUTE权限 2.存储过程 用于在数据库中完成特定的操作或者任务 create or replace PROCEDURE name [(parameter,…)]

    1.6K20

    常用SQL语句和语法汇总

    扯远了,飞回来~~~ 创建数据库 SQL常用规则0 数据库的名称只能使用小写字母 关系数据库以行为单位读写数据 SQL根据功能不同可以分为三类,其中使用最多的是DML(数据操纵语言) SQL语句以分号(...表的创建 SQL常用规则1 数据库名称、表名和列名由字母、数字和下划线组成 名称必须以字母开头 名称不能重复 表的删除 表定义的更新(添加列) 表定义的更新(删除列) 列的查询 查询出表中的所有列 根据...WHERE语句来选择记录 SQL常用规则2 SQL语句可以使用AS关键字为列设定别名,设定汉字别名时需要使用双引号(’’)括起来 在SELECT语句中可以使用DISTINCT来删除重复行 WHERE子句要紧跟在...SQL中的逻辑运算被称为三值逻辑(真、假、不确定) 使用GROUP BY 子句对表进行分组 使用WHERE子句和GROUP BY子句进行汇总处理 使用HAVING来指定分组的条件 ORDER BY子句...函数(字符串的截取) UPPER函数(大写转换) CURRENT_DATE函数(当前日期) CURRENT_TIME函数(当前时间) CURRENT_TIMESTAMP函数(当前日期和时间) EXTRACT

    2.5K50

    Oracle - 函数及多表关联

    函数根据处理的数据分为单行函数和聚合函数(组函数),组函数又被称作聚合函数,用于对多行数据进行操作,并返回一个单一的结果,组函数仅可用于选择列表或查询的having子句;单行函数对单个数值进行操作,并返回一个值...15 select ceil(1.9) from dual; 16 -- floor 向下取整 17 select floor(1.9) from dual; 3 日期时间函数 1 -- 返回系统当前时间...2 select sysdate from dual; 3 -- 返回当前会话时区中的当前日期 4 select current_date from dual; 5 6 -- 添加月数...(组函数仅可用于选择列表或查询的having子句) 聚合函数对字段是 null 的值进行忽略。 max/min 适合任意数据类型,sum/avg 只适用于数值类型。...选取满足where子句中给出的条件表达式的元组 按group子句中指定列的值分组,同时提取满足Having子句中组条件表达式的那些组 按select子句中给出的列名或列表达式求值输出 Order by子句对输出的目标表进行排序

    97030

    MySQL 系列教程之(七)DQL:从 select 开始丨【绽放吧!数据库】

    使用子句的次序不对将产生错误消息 过 滤 数 据 WHERE 数据库表一般包含大量的数据,很少需要检索表中所有行。 通常只会根据特定操作或报告的需要提取表数据的子集。...在SELECT语句中,数据根据WHERE子句中指定的搜索条件进行过滤。...原因在于计算的次序。SQL在处理OR操作符前,优先处理AND操作符。 当SQL看到上述WHERE子句时,它理解是 19期班级的所有女生,或者18期的所有学员,而不分性别。...> >但是,一个未命名的列不能用于客户机应用中,因为客户机没有办法引用它。 > >为了解决这个问题,SQL支持列别名。别名(alias)是一个字段或值的替换名。...> > 通过这些例子,可以明白如何根据需要使用SELECT进行试验 函数的使用 与其他大多数计算机语言一样,SQL支持利用函数来处理数据。

    3.6K43

    记一次批量删除导致MySQL只读实例同步延迟高达1288秒

    背景 由于线上的操作日志记录表日志太大,需要进行定期删除处理。...DELETE FROM resty_log WHERE create_time < NOW() - INTERVAL 30 DAY; 以上SQL语句中,NOW() 函数返回当前的日期和时间(包括时、分...INTERVAL 30 DAY 表示一个时间间隔,即30天。整个WHERE子句筛选出所有create_time字段值小于当前时间减去30天的记录,并通过DELETE语句将这些记录从表中删除。...在SQL中,DELETE 语句本身就可以用于删除多行数据,只要你的 WHERE 子句能够匹配到多行。...1、使用 WHERE 子句限制删除的行数 虽然这不是真正的“批量”处理,但你可以通过 WHERE 子句中的条件来限制每次删除的行数。例如,你可以根据某个时间戳或ID范围来删除数据。

    11810

    SQL函数 DATEDIFF

    DATEDIFF返回startdate和enddate之间指定单位的总数。例如,两个日期时间值之间的分钟数计算日期部分和时间部分,并为每一天的差异增加1440分钟。...如果当前区域设置是这些区域设置之一,DATEDIFF接受句号或逗号作为本地日期格式的秒分隔符。 对于$HOROLOG格式的日期或ODBC格式的日期,不能使用逗号作为小数秒分隔符。...(SELECT DATEDIFF(:x,:date1,:date2) INTO :diff) w diff } 1 下面的例子使用WHERE子句中的DATEDIFF来选择上周入院的患者...: SELECT Name,DateOfAdmission FROM Sample.Patients WHERE DATEDIFF(D,DateOfAdmission,$HOROLOG) <= 7 下面的例子使用了一个子查询来返回那些个人的出生日期距当前日期不超过...1500天的记录: SELECT Name,Age,DOB FROM (SELECT Name,Age,DOB, DATEDIFF('dy',DOB,$HOROLOG) AS DaysTo FROM Sample.Person

    3.5K40
    领券