511. 游戏玩法分析 I

solution

SELECT player_id, MIN(event_date) AS first_login
FROM Activity
GROUP BY player_id;

512. 游戏玩法分析 II

SELECT player_id, device_id
FROM Activity
WHERE (player_id, event_date) IN (SELECT player_id, MIN(event_date)
FROM Activity
GROUP BY player_id);

HAVING不行的原因

having子句执行在select 之后, 因此having中的字段必须在select子句中, event_date没有再select子句里,所以不行

534. 游戏玩法分析 III

SELECT a1.player_id, a1.event_date, SUM(a2.games_played) AS games_played_so_far
FROM Activity a1, Activity a2
WHERE a1.player_id = a2.player_id
AND a1.event_date >= a2.event_date
GROUP BY a1.player_id, a1.event_date --这一定要有a1.event_date,否则Result会根据player_id自动合并
ORDER BY a1.player_id, a1.event_date;

另一种方法:

SELECT player_id, event_date,
CASE WHEN @prev = player_id THEN @cnt := @cnt + games_played
WHEN @prev := player_id THEN @cnt := games_played
END 'games_played_so_far'
FROM (SELECT player_id, event_date, games_played
FROM activity
ORDER BY player_id, event_date) a,
(SELECT @cnt := 0, @prev := null) t;

550. 游戏玩法分析 IV

方法一

SELECT ROUND(COUNT(DISTINCT player_id)/(SELECT COUNT(DISTINCT player_id)
FROM Activity), 2) AS fraction
FROM Activity
WHERE (player_id, event_date) IN(SELECT player_id, DATE(MIN(event_date)+1)
FROM Activity
GROUP BY player_id);

方法二

SELECT ROUND(SUM(CASE WHEN DATEDIFF(a.event_date, b.first_date)=1 THEN 1 ELSE 0 END) / (SELECT COUNT(DISTINCT player_id)
FROM Activity), 2) AS fraction
FROM Activity a, --千万不要漏掉这个逗号!!
(SELECT player_id, MIN(event_date) AS first_date
FROM Activity
GROUP BY player_id) b
WHERE a.player_id = b.player_id;

569. 员工薪水中位数

SELECT b.id,b.company,b.salary
-- 3. 连接结果
FROM (
-- 1. 按 company 分组排序,记为 `rk`
SELECT id,company,salary,
CASE @com WHEN company THEN @rk:=@rk+1 ELSE @rk:=1 END rk,
@com:=company
FROM employee,(SELECT @rk:=0, @com:='') a
ORDER BY company,salary) b
LEFT JOIN
(-- 2. 计算各 company 的记录数除以2,记为 `cnt`
SELECT company,COUNT(1)/2 cnt FROM employee GROUP BY company) c
ON b.company=c.company
-- 4. 找出符合中位数要求的记录
WHERE b.rk in (cnt+0.5,cnt+1,cnt);

[SQL]511+512+534+550+569的更多相关文章

  1. 『片段』OracleHelper (支持 多条SQL语句)

    C# 调用 Oracle 是如此尴尬 >System.Data.OracleClient.dll —— .Net 自带的 已经 过时作废. >要链接 Oracle 服务器,必须在 本机安装 ...

  2. Sql语句知识大全

    1.经典SQL语句大全(绝对的经典) 2. 3. 4.一.基础 1.1.说明:创建数据库 2.CREATE DATABASE database-name 3.2.说明:删除数据库 4.drop dat ...

  3. SQL 删除外键列

    一 SQL删除列的语句是: alter table tableName drop column columnName --(其中,tableName为表名,columnName为列名) 但是,如果某列 ...

  4. SQL存储过程将符合条件的大量记录批量删除脚本

    -- ============================================= -- Author: James Fu -- Create date: 2015/10/27 -- D ...

  5. Linux命令学习总结:dos2unix - unix2dos

    命令简介: dos2unix是将Windows格式文件转换为Unix.Linux格式的实用命令.Windows格式文件的换行符为\r\n ,而Unix&Linux文件的换行符为\n. dos2 ...

  6. 【转】T-SQL 教程

    USE [test] GO /****** Object: StoredProcedure [dbo].[PageIndex] Script Date: 12/07/2011 10:26:36 *** ...

  7. oracle中的exists 和not exists 用法详解(转)

    有两个简单例子,以说明 “exists”和“in”的效率问题 1) select * from T1 where exists(select 1 from T2 where T1.a=T2.a) ; ...

  8. OSChina 其中很重要的一类——RequestContext

    RequestContext 这个类在 OSChina 中是很重要的一个类.该类由全局 Filter 进行初始化.并传递给包含 Action 和 页面中直接使用.使用时通过 RequestContex ...

  9. memcached使用文档

    使用memcached进行内存缓存 通常的网页缓存方式有动态缓存和静态缓存等几种,在ASP.NET中已经可以实现对页面局部进行缓 存,而使用memcached的缓存比ASP.NET的局部缓存更加灵活, ...

随机推荐

  1. IP 地址与MAC硬件地址

    IP 地址与MAC硬件地址 我们都知道数据通信要使用IP地址加MAC地址,两个地址缺一不可,下为原理图: 1.下面介绍计算机A与计算机B通信的过程 交换机基于数据帧的MAC地址转发数据帧,路由器基于数 ...

  2. React项目实战:react-redux-router基本原理

    React相关 React 是一个采用声明式,高效而且灵活的用来构建用户界面的框架. JSX 本质上来讲,JSX 只是为React.createElement(component, props, .. ...

  3. fsLayuiPlugin配置说明

    fsLayuiPlugin 是一个基于layui的快速开发插件,支持数据表格增删改查操作,提供通用的组件,通过配置html实现数据请求,减少前端js重复开发的工作. GitHub下载 码云下载 测试环 ...

  4. 解决Sprite Atlas打包Asset bundles时重复打包的问题

    0x00 前言 在Unity 2018.4.6之前的版本,有一个和SpriteAtlas打AB包有关的常见问题.即当给Sprite Atlas打AB包时,Sprite Atlas Texture可能会 ...

  5. vue移动端字体大小设置

    const setRemUnit = () => { const docEl = document.documentElement; // IPhone6下750像素来设计,实际像素375px, ...

  6. 必备技能一、webpack

    https://cloud.tencent.com/developer/section/1477376----->配置很重要 一.基本安装 mkdir webpack-demo &&am ...

  7. Simulink仿真入门到精通(十四) Simulink自定义环境

    14.1 Simulink环境自定义功能 sl_sustomization.m函数是Simulink提供给用户使用MATLAB语言自定义Simulink标准人机界面的函数机制.若sl_sustomiz ...

  8. pip 安装超时问题

    pip install -i https://pypi.doubanio.com/simple/ 包名 参考: https://blog.csdn.net/qq_39161804/article/de ...

  9. Druid 0.17 入门(3)—— 数据接入指南

    在快速开始中,我们演示了接入本地示例数据方式,但Druid其实支持非常丰富的数据接入方式.比如批处理数据的接入和实时流数据的接入.本文我们将介绍这几种数据接入方式. 文件数据接入:从文件中加载批处理数 ...

  10. [日志分析]Graylog2采集Nginx日志 主动方式

    这次聊一下Graylog如何主动采集Nginx日志,分成两部分: 介绍一下 Graylog Collector Sidecar 是什么 如何配置 Graylog Collector Sidecar 采 ...