今天我们来分享一个常见案例,用SQL来计算用户留存率。 目录: 1. 案例数据 2. 思路分析 3. 完整代码 1. 案例数据 这里我们一共两份日志数据,分别是用户账号创建的日志以及用户登录的日志。...账号创建日志 账号创建日志 用户登录日志 登录日志 以上案例数据 后台回复 955 可以在SQL文件夹里data领取 2....SELECT DISTINCT STR_TO_DATE( $part_date, '%Y-%m-%d' ) login_date, role_id FROM role_login 为了计算某条登录日志是该用户创建账号后的第几天登录...create_log.role_id)) ) temp_1 GROUP BY create_date ) temp_2 ORDER BY create_date ASC 以上就是本次全部内容,由于不同的sql...后续我们会陆续进行SQL与Python的常见数据处理计算案例分享,敬请期待!
上次我们根据用户创建账号和登录日志进行了《用SQL进行用户留存率计算》,今天我们继续用这份用户登录日志来计算用户连续登录天数。 1....数据预览 这里我们用到的是用户登录的日志,其中用户每天可能存在多次登录。 用户登录日志 用户登录 以上案例数据 后台回复 955 可以在SQL文件夹里data领取 2....《『数据分析』pandas计算连续行为天数的几种思路》 《利用Python统计连续登录N天或以上用户》 今天,我们用SQL来进行本次的操作,大致分为以下几步: 数据去重 SELECT DISTINCT...SELECT DISTINCT role_id , $part_date date FROM role_login ) temp_1 再用登录日期和排序序号进行差值计算...后续我们会持续分享SQL和Python的实操案例哈,敬请期待!
RLIKE SCHEMA SCHEMAS SECOND_MICROSECOND SELECT SENSITIVE SEPARATOR SET SHOW SMALLINT SPATIAL SPECIFIC SQL...SQLEXCEPTION SQLSTATE SQLWARNING SQL_BIG_RESULT SQL_CALC_FOUND_ROWS SQL_SMALL_RESULT SSL STARTING STRAIGHT_JOIN
前言 如果要列举Flink SQL新手有可能犯的错误,笔者认为其中之一就是忘记设置空闲状态保留时间导致状态爆炸。...Flink SQL提供的idle state retention time特性可以保证当状态中某个key对应的数据未更新的时间达到阈值时,该条状态被自动清理。...minRetentionTime和最大保留时间maxRetentionTime(根据实际业务决定),且两者至少相差5分钟。...以计算Top-N的AppendOnlyTopNFunction为例,它的processElement()方法中会对到来的每个元素注册清理Timer: @Override public void processElement...在Table/SQL模块中还有一个内置的触发器StateCleaningCountTrigger,它可以对窗口中的元素进行计数,并按照计数阈值或者空闲状态保留的时间阈值来清理(即FIRE_AND_PURGE
Flink SQL 空闲状态保留时间和参数配置 Flink SQL 空闲状态保留时间是针对 SQL 中聚合 Key 而言的,空闲的时间也就是 Key 没有更新的时间。...(最大空闲状态时间定义了一个 Key 的状态至多空闲的时间) 用户在设置状态的空闲时间时,最小的状态空闲时间和最大的状态空闲时间之间的间隔必须大于 5 分钟。...Flink SQL 空闲状态保留时间实现原理分析 简单的讲,Flink SQL 空闲状态保留的时间底层是基于 KeyedProcessFunction 函数来进行实现的,然后为每个 Key,结合空闲状态时间的最小值和最大值注册...有个点需要注意,如果某个 Key 的状态被清理掉,如果后续再来这个 Key 的消息记录时,会被当做该 Key 的第一条记录来进行处理,聚合值也是重新开始计算。所以,请确保设置合理的空闲状态保留时间。...总结 Flink SQL 虽然没有 DataStream API 那样为每个算子单独来设置状态的保留时间,不过在 Flink SQL 我们可以设置空闲状态的保留时间,具体的时间业务方根据实际情况而定。
有一张表t,三个字段,自增id,name,update_time,删除name重复的行,保留update_time最大的那一条,只保留一条 DELETE FROM t WHERE t...`name` HAVING count(1) > 1 ) 说明:如果是随便删除,保留一行,那大家应该都会,这里就是可能会出现update_time重复的情况,所以需要update_time
解决方案 今天这个问题和我上一篇文章(SQL 订单揽收统计)里面的问题很相似,只不过这里要求多统计一列,因此,解决的思路也差不多。 下面我将用 CTE 来演示每个步骤。...第一步,计算出上个月每个客户的消耗金额。...第三步,计算留存。根据留存的定义,只要客户在本月中有消耗,就计入留存数。...我们在 t1 之后插入表达式 t12,t12 用来计算每个客户的消耗金额和留存状态,它的脚本如下: t12 AS (SELECT t1.customer_id, t1.amount, IF(...完整的 SQL 实现: with t1 AS (SELECT customer_id, SUM(amount) AS amount FROM t WHERE created_day BETWEEN
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/162207.html原文链接:https://javaforall.cn
什么是孤立的SQL用户? 那么孤立用户又是什么东西那?一个孤立用户就是一个数据库用户,同时没有SQL Server的登录权限。...Declare @SQL as varchar (200) Declare @DDBName varchar (100) Declare @Orphanname varchar (100) Declare...Exec (@SQL) Begin Try Set @SQL = 'Use ' + @DDBName...+ ' Drop User [' + @Orphanname + ']' Exec (@SQL) End Try Begin Catch End Catch...在删除的孤立用户同时,也会删除孤立用户拥有的架构。需要引起注意。这个脚本将不会检查其他可能被用户拥有的对象。我已经在sql server 2005/2008/2014上进行了测试,请大家知悉。
讨论 很多时候,构造一个延迟计算属性的主要目的是为了提升性能。 例如,你可以避免计算这些属性值,除非你真的需要它们。...lazyproperty 类利用这一点,使用 __get__() 方法在实例中存储计算出来的值, 这个实例使用相同的名字作为它的property。...这样一来,结果值被存储在实例字典中并且以后就不需要再去计算这个property了。...## 讨论 很多时候,构造一个延迟计算属性的主要目的是为了提升性能。 例如,你可以避免计算这些属性值,除非你真的需要它们。...这样一来,结果值被存储在实例字典中并且以后就不需要再去计算这个property了。
今天在vfp对接企业微信接口下载JSON时,发现JSON的键是ORDER,这下生成的DAL_CA类发现保存不了, 报:连接错误: [Microsoft][ODBC SQL Server Driver][...SQL Server]关键字 'ORDER' 附近有语法错误。...department_leader":["lisi","wangwu"], "parentid": 2, "order": 40 } ] } order 是SQL...保留字,在处理SQL指令时要套上外套,像这样[order].
现定义用户受欢迎程度=用户拥有的朋友总数/平台上的用户总数,请计算出每个用户的受欢迎程度。...user2_id与user1_id 互换,然后与原表进行union all; 对union all后的数据,按照user1_id分组,统计user2_id的个数,即user1_id 的好友数据,使用开窗计算出用户总数...| 10 | | 10 | 9 | +---------------+---------------+ 2.计算每个用户的好友数...,开窗计算出总用户数 执行SQL with tmp as (select user1_id, user2_id from t_friend...| 10 | | 1 | 4 | 10 | +-----------+-------------+------------+ 3.用户好友数除以总用户数计算最终结果
使用 Round() 函数,如 Round(@num,2) ,其中参数 2 表示 保留两位有效数字。 缺点:Round() 只是负责四舍五入到两位小数,但是不负责去掉后面的0。...使用 Convert(decimal(18,2),@num) 实现转换,其中参数 2 表示 保留两位有效数字。...3.使用 cast(@num as decimal(18,2)) 实现转换,其中参数 2 表示 保留两位有效数字。...GETDATE() AS varchar) --输出 07 1 2013 9:56PM 四、ROUND简单用法 ROUND格式:ROUND(p1,p2,p3) P1:要被四舍五入的值; P2:保留的小数位数.../func-convert.html Round()函数(重要) https://docs.microsoft.com/en-us/sql/t-sql/functions/round-transact-sql
使用 Round() 函数,如 Round(@num,2) 参数 2 表示 保留两位有效数字。 2....更好的方法是使用 Convert(decimal(18,2),@num) 实现转换,decimal(18,2) 指定要保留的有效数字。
删除表中多余的重复记录,重复记录是根据单个字段(id)来判断,只留有rowid最小的记录 //删除用户 根据用户名,并且不包括最小ID delete from users where username...in ( --根据用户名称排序,大于1 select username from users group by username having count(username)...> 1 ) and Id not in ( --根据用户名排序,获取最小ID select min(Id) from users group by username having
笔者在 HackerRank 上的 SQL 编程挑战看到这题,这题有 96% 的提交成功率。实际上,使用 SQL 求中位数远远没那么简单。...解决方案 解决方案主要有两种,第一种方案是对数据按大小排序后找到居中的值,再求值的平均数;第二种解决方案计算出每个数与其它数的相对距离(两数相减,结果为正则作 1,结果为负作 0,相等是 0),再对位移的结果加和...对应的 SQL 实现: # 准备数据 WITH t AS (SELECT 3 AS num UNION ALL SELECT 6 UNION ALL SELECT 3 UNION ALL SELECT...比如“1,2,3,5,6,7”这组数据,计算 margin,结果如下: num margin ------ -------- 1 5 2 3...ON 1 = 1 GROUP BY a.num) SELECT AVG(num) FROM t1 WHERE equal >= margin 由于我们对数据做了笛卡尔积的操作,因此实际上计算出来的
但是最近有个SQL Server的需求,需要知道历史SQL的执行者。...如下SQL,可以找到当前SQL Server跑过的SQL,但是没用户信息, SELECT p.refcounts, p.usecounts, sqltext.text FROM sys.dm_exec_cached_plans...sqltext.dbid)) = 'XXX' ORDER BY sqltext.text 从官网找到DMV中有个sys.dm_exec_sessions,其中字段login_name,应该指的是登录的用户名...view=sql-server-ver15 但是能和sys.dm_exec_sql_text关联起来的只有database_id,如下得到的应该是个笛卡尔积,并未将SQL和login_name用户的信息关联起来...无论从监控粒度,还是数据统计的角度,SQL和用户信息关联检索还是有用的,可以做到更精细的控制,不太清楚为什么微软官方没给出这样的设计,或者有其他隐藏的功能?
简介 在创建SQL server用户时会发现创建了两个账号。这里会涉及两个概念----登录名账号和数据库用户。 本人不详细解读(我也不熟),只是在工作中遇到,简单了解。...所以登录名账号是用来连接SQL server数据库引擎的。比如默认且最高权限的登录名账号----sa。 数据库用户 第二步则是创建一个数据库用户,且不用设置密码,且会绑定到登录名账号。...所以登录名账号是通过数据库用户来操作数据库的,对此数据库的权限也要看绑定的数据库用户。 每个数据库的用户并不相通,但是可以每个数据库创建相同名称的用户名。 概念总结 登录名账号是用来连接数据库的。...数据库用户是用来管理数据库的(即权限分配)。 一个数据库用户只能绑定一个登录名账号。...sql语句 登录名语句 创建 CREATE LOGIN [login_name] WITH PASSWORD = 'password'; 删除 DROP LOGIN [login_name]; 数据库用户语句
我们要统计 emp 表中每个部门的工资及公司的总工资,该怎么写 SQL 呢? emp 表的数据 ? 有一个完美的解决方案是使用 GROUP BY 子句的 ROLLUP 扩展。...在 MySQL 中,解决这个问题的 SQL 可以这么写: SELECT IFNULL(deptno, 'TOTAL') AS deptno, SUM(sal) sal FROM emp GROUP...UNION ALL SELECT 'TOTAL' AS deptno,SUM(sal) AS sal FROM emp 如果我们想按照 deptno、job 以及 deptno/job 组合分别计算出工资合计值...在 MySQL 上实现的思路: 按照各个组合条件分别计算出结果; 使用 UNION ALL 把 1 中统计出来的结果合并到一块。...SELECT deptno AS '部门编号',job '职位', '按部门和职位合计' AS '计算规则', SUM(sal) '工资合计' FROM emp GROUP BY deptno
具体安装方法可以参考《函数计算安装依赖库方法小结》。而 pymssql 的老版本涉及到编译安装,比常见的二级制安装到本地目录略复杂一些。...下面的例子是基于函数计算 runtime python3.6 的,对于 python2.7 也进行了测试,同样适用。...因为本地路径 $(pwd) 被挂载到 container 内部的 /code 目录,所以 container 退出以后 /code 目录的内容还会保留在本地当前路径下。...对于不需要使用老本 pymssql 的用户看到这里就可以结束了。...小结 这是一份来迟的函数计算使用 sql server 数据库的配置文档。当前版本的 pymssql 已经不再需要源码安装了。但是 pip 源码包安装的方法,对于其他类似的场景也是适用的。
领取专属 10元无门槛券
手把手带您无忧上云