数据统计SQL备忘

1、统计9月注册角色首次充值时的游戏时长分布(分钟,人数),单位:分钟

SELECT sub.minutes,
       Count(roleId) AS count
FROM   (SELECT pr.roleId,
               Timestampdiff(MINUTE, Max(player_login.logTime), pr.logTime)
               + Ifnull(Max(player_logout.totalOnlineMins), 0) AS minutes
        FROM   (SELECT logTime,
                       roleId
                FROM   player_recharge
                WHERE  createTime >= ‘2017-09-01‘
                       AND createTime < ‘2017-10-01‘
                       AND rechargeTimes = 1) AS pr
               LEFT JOIN player_logout
                      ON player_logout.roleId = pr.roleId
               LEFT JOIN player_login
                      ON player_login.roleId = pr.roleId
        WHERE  player_logout.logTime < pr.logTime
               AND player_login.logTime < pr.logTime
        GROUP  BY pr.roleId) AS sub
WHERE  sub.minutes > 0
GROUP  BY sub.minutes;

2、按天分组,查9月每天付费前10排行(日期,付费金额,排名,角色ID)

SELECT 
  date AS ‘date‘, 
  pay AS ‘pay‘, 
  rank, 
  roleId 
FROM 
  (
    SELECT 
      zl_tmp.roleId, 
      zl_tmp.date, 
      zl_tmp.pay, 
      @rownum := @rownum + 1, 
      IF(
        @date = zl_tmp.date, @rank := @rank + 1, 
        @rank := 1
      ) AS ‘rank‘, 
      @date := zl_tmp.date 
    FROM 
      (
        SELECT 
          roleId, 
          SUM(cash) AS ‘pay‘, 
          DATE_FORMAT(logTime, ‘%Y-%m-%d‘) AS ‘date‘ 
        FROM 
          player_recharge 
        WHERE 
          logTime >= ‘2017-09-01‘ 
          AND logTime < ‘2017-10-01‘ 
        GROUP BY 
          date, 
          roleId 
        ORDER BY 
          date, 
          pay DESC
      ) zl_tmp, 
      (
        SELECT 
          @rownum := 0, 
          @date := NULL, 
          @rank := 0
      ) a
  ) result 
HAVING 
  rank <= 10;

3、统计9月每日付费转化率(日期,活跃用户数,付费用户数)

SELECT 
  pl.date, 
  pl.plCount AS activeAccoCount, 
  COALESCE(pr.prCount, 0) AS payAccoCount 
FROM 
  (
    SELECT 
      Date_format(logTime, ‘%Y-%m-%d‘) AS date, 
      Count(DISTINCT roleId) AS plCount 
    FROM 
      player_login 
    WHERE 
      logTime >= ‘2017-09-01‘ 
      AND logTime < ‘2017-10-01‘ 
    GROUP BY 
      date
  ) AS pl 
  LEFT JOIN (
    SELECT 
      Date_format(logTime, ‘%Y-%m-%d‘) AS date, 
      Count(DISTINCT roleId) AS prCount 
    FROM 
      player_recharge 
    WHERE 
      logTime >= ‘2017-09-01‘ 
      AND logTime < ‘2017-10-01‘ 
    GROUP BY 
      date
  ) AS pr ON pl.date = pr.date;
时间: 2024-11-08 15:30:42

数据统计SQL备忘的相关文章

Postgresql,常用sql备忘

1.查看所有表的名称 Postgresql,greeplum,如果数据库在几千里以外,数据量巨大,网速不好,使用pgadmin客户端,那么你大部分时间都要浪费在等在中... 使用pgadmin的query是个不错的选择,但是,怎么才能知道表名呢,这丫真没mysql好用—— SELECT tablename FROM pg_tables where tablename not like 'gp%' and tablename not like 'gp%' and tablename not lik

常用的数据统计Sql 总结(转)

转:http://www.cnblogs.com/zhangweizhong/p/5577842.html 最近刚在搞一个BI的项目,里面需要大量的sql 数据统计相关运用,加深了我又对SQL的理解与使用. 所以,分享几个数据统计时常用的sql 语句总结: 1. 统计各个条件下的数据 select BatchId,sum(CardSum) 总金额, sum(case when Status=1 then CardSum else 0 end) as 已使用, sum(case when Stat

常用的数据统计Sql 总结

最近刚在搞一个BI的项目,里面需要大量的sql 数据统计相关运用,加深了我又对SQL的理解与使用. 所以,分享几个数据统计时常用的sql 语句总结: 1. 统计各个条件下的数据 select BatchId,sum(CardSum) 总金额, sum(case when Status=1 then CardSum else 0 end) as 已使用, sum(case when Status=2 then CardSum else 0 end) as 已冻结 from GiftCard gro

sqlserver -- 查看当前数据库的数据表(备忘)

@[email protected]||... 记性不好,备忘... 语句功能:查看当前数据库的所有表(根据所需,进行语句改写即可) SELECT * FROM sysobjects WHERE (xtype = 'U') 备注:xtype 取值范围如下: C = CHECK 约束 D = 默认值或 DEFAULT 约束 F = FOREIGN KEY 约束 L = 日志 FN = 标量函数 IF = 内嵌表函数 P = 存储过程 PK = PRIMARY KEY 约束(类型是 K) RF =

一些性能查询的SQL 备忘

--检查数据库的等待事件 from v$session_waitwhere event not like 'SQL%' and event not like 'rdbms%' --找出系统中耗时的操作select b.username username,a.disk_reads reads,       a.executions exec,a.disk_reads/decode(a.executions,0,1,a.executions)           rds_exec_ratio,   

oracle 普通业务数据统计sql

-- 字符串分割示例 SELECT REGEXP_SUBSTR('17,20,23', '[^,]+', 1, LEVEL, 'i') AS STR FROM DUAL CONNECT BY LEVEL <= LENGTH('17,20,23') - LENGTH(REGEXP_REPLACE('17,20,23', ',', ''))+1; CREATE TABLE tm_change( ID NUMBER, transit_zno VARCHAR2(10), src VARCHAR2(100

Mysql又一次整理笔记--woods备忘

==============================SQL备忘 CRUD 查询 多表 事件等=============================== -------------------------------------------------------------------------------------------------- 一.数据库 1.创建数据库 create database [if not exists] db_name [character set

Mysql重新整理笔记--woods备忘

==============================SQL备忘 CRUD 查询 多表 事件等=============================== -------------------------------------------------------------------------------------------------- 一.数据库 1.创建数据库 create database [if not exists] db_name [character set

SQL Server -- 自定义函数(学习总结,备忘)

SQL Server自定义函数,以前只在书上看过,没有动手去敲一敲,今天刚好接触到,看了几篇博文学习了下.做好备忘很重要!! (@[email protected])Y Learn from:http://www.cnblogs.com/lideng/archive/2013/04/15/3022418.html 自定义函数分为:标量值函数或表值函数两种. 标量值函数:如果 RETURNS 子句指定一种标量数据类型,则函数为标量值函数. 表值函数:如果 RETURNS 子句指定 TABLE,则函