数据统计SQL备忘

简介:

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
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月每日付费转化率(日期,活跃用户数,付费用户数)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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;

本文转自   zl1030   51CTO博客,原文链接:http://blog.51cto.com/zl1030/1964561
相关文章
|
4月前
|
SQL 存储 BI
gbase 8a 数据库 SQL合并类优化——不同数据统计周期合并为一条SQL语句
gbase 8a 数据库 SQL合并类优化——不同数据统计周期合并为一条SQL语句
|
5月前
|
SQL 运维 关系型数据库
MySQL 运维 SQL 备忘
MySQL 运维 SQL 备忘录
71 1
|
7月前
|
SQL 数据挖掘 BI
【超实用技巧】解锁SQL聚合函数的奥秘:从基础COUNT到高级多表分析,带你轻松玩转数据统计与挖掘的全过程!
【8月更文挑战第31天】SQL聚合函数是进行数据统计分析的强大工具,可轻松计算平均值、求和及查找极值等。本文通过具体示例,展示如何利用这些函数对`sales`表进行统计分析,包括使用`COUNT()`、`SUM()`、`AVG()`、`MIN()`、`MAX()`等函数,并结合`GROUP BY`和`HAVING`子句实现更复杂的数据挖掘需求。通过这些实践,你将学会如何高效地应用SQL聚合函数解决实际问题。
88 0
|
SQL 关系型数据库 MySQL
MySQL实战基础知识入门(8):当天和昨天24小时数据统计的sql语句解决方案
MySQL实战基础知识入门(8):当天和昨天24小时数据统计的sql语句解决方案
511 0
MySQL实战基础知识入门(8):当天和昨天24小时数据统计的sql语句解决方案
|
SQL Go
SQL Server修改标识列方法(备忘)
原文:SQL Server修改标识列方法(备忘) SQL Server修改标识列方法 ----允许对系统表进行更新 exec sp_configure 'allow updates',1 reconfigure with override GO ----取消标识列标记 upda...
1590 0
使用Spark Streaming SQL基于时间窗口进行数据统计
使用Spark Streaming SQL可以很方便的对事件数据中的时间字段进行处理,同时Spark Streaming SQL提供的时间窗口函数可以将事件时间按照一定的时间区间对数据进行统计操作。 本文通过讲解一个统计用户在过去5秒钟内点击网页次数的案例,介绍如何使用Spark Streaming SQL对事件时间进行操作。
使用Spark Streaming SQL基于时间窗口进行数据统计
流式计算一个很常见的场景是基于事件时间进行处理,常用于检测、监控、根据时间进行统计等系统中。使用Spark Streaming SQL可以很方便的对事件数据中的时间字段进行处理,本文通过讲解一个统计用户在过去5秒钟内点击网页次数的案例,介绍如何使用Spark Streaming SQL对事件时间进行操作。
8416 0

热门文章

最新文章