题目:

事件表:Events

此表的主键是 (business_id, event_type)。

表中的每一行记录了某种类型的事件在某些业务中多次发生的信息。

问题
写一段 SQL 来查询所有活跃的业务。

如果一个业务的某个事件类型的发生次数大于此事件类型在所有业务中的平均发生次数,并且该业务至少有两个这样的事件类型,那么该业务就可被看做是活跃业务。

示例
查询结果格式如下所示:

Events table:

Result table:

‘reviews’、 ‘ads’ 和 ‘page views’ 的总平均发生次数分别是 (7+3)/2=5, (11+7+6)/3=8, (3+12)/2=7.5。
id 为 1 的业务有 7 个 ‘reviews’ 事件(大于 5)和 11 个 ‘ads’ 事件(大于 8),所以它是活跃业务。
建表语句:

1 drop table if EXISTS Events_1126;
2 create table if not exists Events_1126(
3 business_id int,
4 event_type varchar(50),
5 occurences int
6 );
7 insert into Events_1126 values(1, 'reviews', 7),(3, 'reviews', 3),(1, 'ads', 11),(2, 'ads', 7),(3, 'ads', 6),(1, 'page views', 3),(2, 'page views', 12);

解题思路:

①先求出每种事件类型的平均次数;

1 select event_type, avg(occurences) as avg_num
2 from events_1126
3 group by event_type

②通过event_type将查询出来的临时表与events表进行联结;

1 select business_id,a.event_type,occurences,avg_num
2 from events_1126 a
3 left join (
4 select event_type, avg(occurences) as avg_num
5 from events_1126
6 group by event_type
7 ) as b
8 on a.event_type = b.event_type

③最后以 occurences > avg_num 为条件进行筛选,按business_id分组之后,统计出 类型数大于2的business_id。

 1 select business_id
2 from (
3 select business_id,a.event_type,occurences,avg_num
4 from events_1126 a
5 left join (
6 select event_type, avg(occurences) as avg_num
7 from events_1126
8 group by event_type
9 ) as b
10 on a.event_type = b.event_type
11 ) as temp
12 where occurences > avg_num
13 group by business_id
14 having count(*) >= 2

力扣1126(MySQL)-查询活跃业务(中等)的更多相关文章

  1. 力扣1689. 十-二进制数的最少数目-C语言实现-中等难度题

    题目 传送门 如果一个十进制数字不含任何前导零,且每一位上的数字不是 0 就是 1 ,那么该数字就是一个 十-二进制数 .例如,101 和 1100 都是 十-二进制数,而 112 和 3001 不是 ...

  2. 力扣1438. 绝对差不超过限制的最长连续子数组-C语言实现-中等难度

    题目 传送门 文本 给你一个整数数组 nums ,和一个表示限制的整数 limit,请你返回最长连续子数组的长度,该子数组中的任意两个元素之间的绝对差必须小于或者等于 limit . 如果不存在满足条 ...

  3. 力扣1052. 爱生气的书店老板-C语言实现-中等难度

    题目 传送门 文本 今天,书店老板有一家店打算试营业 customers.length 分钟.每分钟都有一些顾客(customers[i])会进入书店,所有这些顾客都会在那一分钟结束后离开. 在某些时 ...

  4. 力扣---1148. 文章浏览 I

    Views 表:+---------------+---------+| Column Name   | Type    |+---------------+---------+| article_i ...

  5. 力扣---511. 游戏玩法分析 I

    活动表 Activity: +--------------+---------+| Column Name  | Type    |+--------------+---------+| player ...

  6. 分分钟解决MySQL查询速度慢与性能差

    阅读本文大概需要 6 分钟. 一.什么影响了数据库查询速度 1.1 影响数据库查询速度的四个因素 1.2 风险分析 QPS: QueriesPerSecond意思是“每秒查询率”,是一台服务器每秒能够 ...

  7. 打通MySQL架构和业务的任督二脉

    目前,在很多OLTP场景中,MySQL数据库都有着广泛的应用,也有很多不同的使用方式.从数据库的业务需求.架构设计.运营维护.再到扩容迁移,不同的MySQL架构有不同的特点,适应一定的业务场景,或者解 ...

  8. 纲举目张:打通MySQL架构和业务的任督二脉

    目前,在很多OLTP场景中,MySQL数据库都有着广泛的应用,也有很多不同的使用方式.从数据库的业务需求.架构设计.运营维护.再到扩容迁移,不同的MySQL架构有不同的特点,适应一定的业务场景,或者解 ...

  9. 分分钟解决 MySQL 查询速度慢与性能差

    一.什么影响了数据库查询速度 1.1 影响数据库查询速度的四个因素 1.2 风险分析 QPS: QueriesPerSecond意思是“每秒查询率”,是一台服务器每秒能够相应的查询次数,是对一个特定的 ...

  10. 到底该不该使用存储过程 MySQL查询性能优化一则

    到底该不该使用存储过程   看到<阿里巴巴java编码规范>有这样一条 关于这条规范,我说说我个人的看法 用不用存储过程要视所使用的数据库和业务场景而定的,不能因为阿里巴巴的技术牛逼,就视 ...

随机推荐

  1. ubuntu下安装numpy和scipy正确方法

    1.numpy NumPy(Numeric Python)是用Python进行科学计算的基本软件包. NumPy是Python编程语言的扩展,增加了对大型多维数组和矩阵的支持,以及一个大型的高级数学函 ...

  2. python 文件操作常用方法

    一 python文件创建 import os import argparse def file_write(file_name,msg): f = open(file_name,"a&quo ...

  3. 回声消除AEC(Acoustic Echo Cancellation)概括介绍及基本原理分析

    回声消除的基本概念   回音消除(Acoustic Echo Cancelling)是透过音波干扰方式消除麦克风与喇叭因空气产生回受路径(feedback path)而产生的杂音.通俗一点来说,回声消 ...

  4. Spring Boot学习日记13

    学习引入Thymeleaf Thymeleaf 官网:https://www.thymeleaf.org/ Thymeleaf 在Github 的主页:https://github.com/thyme ...

  5. 「AntV」路网数据获取与L7可视化

    1. 引言 L7 地理空间数据可视分析引擎是一种基于 WebGL 技术的地理空间数据可视化引擎,可以用于实现各种地理空间数据可视化应用.L7 引擎支持多种数据源和数据格式,包括 GeoJSON.CSV ...

  6. 记录--npm, npx, cnpm, yarn, pnpm梭哈

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 依赖管理解决了在软件开发过程中管理和协调各种依赖项的问题,简化了开发流程,提高了项目的可靠性.可维护性和可重复性.它们帮助开发人员更高效地 ...

  7. API接口开发规范

    API接口是不同软件系统之间进行通信的重要方式,良好的API接口设计规范可以提高系统的可维护性.可扩展性和易用性.本文介绍了一套详细的API接口开发规范,包括命名规范.请求和响应规范.安全规范等内容, ...

  8. drools执行指定的规则

    目录 1.背景 2.方案 2.1 通过AgendaFilter来实现 2.2 通过entry-point来实现 3.实现 3.1 需求 3.2 drl 文件编写 3.3 部分java代码 3.4 运行 ...

  9. MicroNet: 低秩近似分解卷积以及超强激活函数,碾压MobileNet | 2020新文分析

    论文提出应对极低计算量场景的轻量级网络MicroNet,包含两个核心思路Micro-Factorized convolution和Dynamic Shift-Max,Micro-Factorized ...

  10. DARTS:基于梯度下降的经典网络搜索方法,开启端到端的网络搜索 | ICLR 2019

    DARTS是很经典的NAS方法,它的出现打破了以往的离散的网络搜索模式,能够进行end-to-end的网络搜索.由于DARTS是基于梯度进行网络更新的,所以更新的方向比较准确,搜索时间相当于之前的方法 ...