mysql查询周留存

问题描述

出来了一个,但总是感觉不对。贴上来看看,如果不对应该怎么写?我要查询本周登录下周不再登录的用户数量。select count(distinct playerId) from log_login l1 where week(now())-1=week(loginTime) and exists(select 1 from log_login l2 where l1.playerId = l2.playerId and week(NOW())=week(loginTime)); 问题补充:大哥们~~~我提问错了。是周流失数,上周登录了,本周没登录

解决方案

select count(distinct playerId) from log_login l1 where week(now())=week(loginTime) and exists(select 1 from log_login l2 where l1.playerId = l2.playerId and week(NOW()) - 1=week(loginTime));留存率是:上周登录了 这周也登录了 你写的按理说没错我要查询本周登录下周不再登录的用户数量。 不是下周 而是上周select count(distinct playerId) from log_login l1 where week(now())-1=week(loginTime) and exists(select 1 from log_login l2 where l1.playerId = l2.playerId and week(NOW())=week(loginTime));
解决方案二:
本周登录,下周不在登录的数据,这个问题感觉怪怪的。看你的SQL,子查询中是查询本周的数据,然后外部的查询是上周的数据。最后上周的id 存在于本周的idselect distinct playerId from log_login l1 where week(now())-1=week(loginTime) and exists(select 1 from log_login l2 where l1.playerId = l2.playerId and week(NOW())=week(loginTime));这里不要count吧,不然你上周的结果就是聚合后的数字,跟本周的比不了吧。要获取数量,在外层在包一个 select count(1) from (select distinct playerId from log_login l1 where week(now())-1=week(loginTime) and exists(select 1 from log_login l2 where l1.playerId = l2.playerId and week(NOW())=week(loginTime));) t1是这个意思不?

时间: 2024-08-04 14:35:03

mysql查询周留存的相关文章

mysql查询周流失

问题描述 前边提问说查周流失率,就是上周登录的人在本周没登录这样的一个人数.select count(1) from (select distinct playerId from log_login l1 where week(now())-1=week(loginTime) and not exists(select distinct playerId from log_login l2 where l1.playerId = l2.playerId and week(NOW()) =week

mysql查询当天所有数据sql语句

  mysql查询当天的所有信息: 代码如下 select * from test where year(regdate)=year(now()) and month(regdate)=month(now()) and day(regdate)=day(now()) 这个有一些繁琐,还有简单的写法: 代码如下 select * from table where date(regdate) = curdate(); 另一种写法没测试过 查询当天的记录 代码如下 select * from hb_a

mysql 查询固定时间段问题

问题描述 mysql 查询固定时间段问题 查询一个表中这一周的时间,这一天的时间,这一个月的时间的数据 解决方案 mysql按时间段查询MySql查询时间段django 查询时间段

php、mysql查询当天,查询本周,查询本月的数据实例(字段是时间戳)

php.mysql查询当天,查询本周,查询本月的数据实例(字段是时间戳) //其中 video 是表名: //createtime 是字段: // //数据库time字段为时间戳 // //查询当天: $start = date('Y-m-d 00:00:00'); $end = date('Y-m-d H:i:s'); SELECT * FROM `table_name` WHERE `time` >= unix_timestamp( '$start' ) AND `time` <= uni

mysql查询学生成绩及各科成绩的排名

问题描述 mysql查询学生成绩及各科成绩的排名 学生表student有主键id,学号stuNum,姓名stuName, 课程表course有课程名称主键id,cname 成绩表sc有主键id,学生表id,课程表id 班级表class有主键id,班级名称cname,外键gid关联年纪表的id主键 年纪表grade有主键id,年纪名称gname 年纪-课程表gc有主键id,年纪表gid,课程表cid 所有的表主键id都是uuid 现在查询一个学生的各科成绩以及每科的成绩在班级和在年纪的排名,(如可

MySQL 4.1.0 中文参考手册 --- 6.9 MySQL 查询缓存

mysql|参考|参考手册|缓存|中文 MySQL 4.1.0 中文参考手册 --- 犬犬(心帆)翻译 MySQL Reference Manual for version 4.1.0-alpha. 6.9 MySQL 查询缓存 从 MySQL 4.0.1 开始,MySQL server 有一个重要的特征:Query Cache. 当在使用中,查询缓存会存储一个 SELECT 查询的文本与被传送到客户端的相应结果.如果之后接收到一个同样的查询,服务器将从查询缓存中检索结果,而不是再次分析和执行这

mysql查询区分大小写高性能

 mysql查询默认是不区分大小写的 如: 1 2 3 4 5 6 7 <a href="/tags.php/select/" target="_blank">select</a>  * from  table_name where  a like  'a%'       select  * from  table_name where  a like  'A%'       select * from table_name where a 

MySQL查询和修改auto

 本文实例讲述了MySQL查询和修改auto_increment的方法.分享给大家供大家参考.具体如下: 查询表名为tableName的auto_increment值: 代码如下: SELECT AUTO_INCREMENT FROM information_schema.tables WHERE table_name="tableName";   修改表名为tableName的auto_increment值: 代码如下: ALTER TABLE tableName auto_incr

mysql查询随机几条数据

MySql查询随机几条数据 想到了 Max RAND 这几个函数 用以下2种办法都可以实现查询. 速度还行. 几十万数据左右, 没有什么问题. SELECT * FROM `news` WHERE id >= (SELECT floor(RAND() * (SELECT MAX(id) FROM `news`))) LIMIT 10; SELECT * FROM `news` AS t1 JOIN (SELECT ROUND(RAND() * ((SELECT MAX(id) FROM `new