MYSQL练题笔记-聚合函数-各赛事的用户注册率

一、题目相关内容

1)相关的表

2)题目

3)帮助理解题目的示例,提供返回结果的格式

二、自己初步的理解

有两张不同左右的表,用户表和赛事注册表。然后解题。

1.各种赛事的用户注册百分率

各种赛事的意味着通过contest_id进行分组。

用户注册百分率,我的理解所有用户里面注册这个赛事的百分比,分子其实就是每个赛事参加的用户,也就是分组后的记录数;分母是所有用户数。

或者利用左连接,然后通过avg(case when user_id is not null then +user_id else +0 end)函数算比率。

2.保留2位小数,利用round()。

3.结果按照percentage 降序,相同按照 contest_id,转换成代码就是order by percentage desc,contest_id。

4.加表名

然后我来思考一下,在哪些字段前面加表名。

怀疑case when user_id 要加,变为u.user_id,好吧,测试后+user_id 也要加上u.,就是下面的代码。

Select contest_id,round(avg(case when u.user_id is not null then +u.user_id else +0 end),2)as percentage from users u left join register r on u.user_id=r.user_id group by contest_id order by percentage desc,contest_id;

发现百分率的结果差别,很大,运行结果如下图。

三、错误后的再次分析

1.计算赛事用户注册百分率出现错误

发现上面的计算方式不对,我不是利用值,是利用记录数。

Count(*)/Count(u.user_id) ,这个结果都是1,但是不是左连接吗?

oh,我找答案算了。下面是我找到的题解。

select contest_id, round(100*count(user_id)/(select count(1) from users),2) as percentage from Register group by contest_id order by 2 desc, 1;

好吧确实是我第一个想法是对的,就是每个赛事参加的用户,也就是分组后的记录数;分母是所有用户数。

分析题解里的count(u.user_id)和count(*):

这里count(1),用count(*)代替也有结果,就是速度不一样。

但是count(u.user_id) 这个是必须的,因为不统计NULL。

2.发现还是出错,他还是设置了一个null的,就是有可能有人什么赛事都没有参加,我又忘记了!!!根本不用左连接就行了,啊啊啊啊啊啊啊啊,而且我才发现我找的都没有连接,下面是我最终通过的答案。

Select contest_id,round(100*count(u.user_id)/(select count(*) from users),2)as percentage from users u join register r on u.user_id=r.user_id group by contest_id order by percentage desc,contest_id;

3.题解与我的不同,所以我也不用连接,而且他的排序用的2,1很有意思,应该就是这张表拍第一的字段和排第二的字段,下面是我修改过后的题解

Select contest_id,round(100*count(user_id)/(select count(*) from users),2)as percentage from register group by contest_id order by percentage desc,contest_id;

四、总结

1.这种计算百分比的,我发现自己还是比较容易出错的

2.到底是连接没理解对,空值存在的情况还是没考虑好。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/195493.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

synchronized底层原理(一)

文章目录 1. 问题引入2. 相关概念3. Synchronized使用4. Synchronized底层原理1. 简介2. Monitor(管程/监视器)3. Java语言的内置管程synchronized4. Java对象的内存布局5. 如何使用MarkWord记录锁状态6. 偏向锁7. 轻量级锁 1. 问题引入 假设我们有1000…

手把手教你写一个Shell脚本部署你的服务

我们都知道,在开发的过程中,有很多部署自己微服务的方式,其中有各种各样的不同操作,比如使用 docker 打包为镜像的方式,还有基础使用 jar 包的方式进行部署,但是呢?使用 jar 包部署,…

XIAO ESP32S3之AI教程

一、sipeed AI教程 AI 指南 - Sipeed Wiki 二、TinyMX TinyMaix是国内sipeed团队面向单片机的超轻量级的神经网络推理库,即TinyML推理库,可以让你在任意单片机上运行轻量级深度学习模型。 英文:https://github.com/sipeed/TinyMaix 中文:https://gi…

Spring cloud - gateway

什么是Spring Cloud Gateway 先去看下官网的解释: This project provides an API Gateway built on top of the Spring Ecosystem, including: Spring 6, Spring Boot 3 and Project Reactor. Spring Cloud Gateway aims to provide a simple, yet effective way t…

Git:分布式版本控制系统的崛起与演变

简介 Git是一个开源的分布式版本控制系统,旨在有效、高速地处理从很小到非常大的项目版本管理。它是由Linus Torvalds于2005年创建的,最初是为了服务于Linux内核开发的版本控制需求。Git通过强大的分支功能、高效的缓存机制以及可扩展的架构设计&#xf…

Golang 并发 — 流水线

并发模式 我们可以将流水线理解为一组由通道连接并由 goroutine 处理的阶段。每个阶段都被定义为执行特定的任务,并按顺序执行,下一个阶段在前一个阶段完成后开始执行。 流水线的另一个重要特性是,除了连接在一起,每个阶段都使用…

大量 SVG 图标在 React 中的极速集成与应用

1. 背景 在一些业务场景中,可能需要使用一些业务上自定义的图标,而这些业务图标消费起来需要很多重复的流程和样板代码,用多了很繁琐。 大致流程: Sketch svg 导出 ➡️ 压缩 svg ➡️ 纯色图标 currentColor 覆写 ➡️ 上传 s…

拼多多商品价格监控自动化API接口获取拼多多商品详情数据API接口

随着电子商务的飞速发展,越来越多的人选择在网上购物。在这个充满竞争的市场中,拼多多以其独特的商业模式和创新的营销手段,迅速崛起成为中国领先的电商平台之一。为了更好地满足消费者的需求,拼多多提供了丰富的API接口&#xff…

JavaScript的创建对象时的语法糖

js中创建一个自定义对象有两种方法,一种是使用new,另一种是使用对象字面量形式(即直接构建,关于字面量详见https://blog.csdn.net/bigcarp/article/details/134777091) 使用对象字面量定义对象时,若对象的…

统信UOS_麒麟KYLINOS配置apt及git内网代理

原文链接:统信UOS/麒麟KYLINOS上配置APT和GIT内网代理 **hello,大家好啊!**在企业环境中,出于安全和管理的考虑,很多公司会设置内网代理服务器,以控制和监管内部网络的访问。这就意味着,员工在使…

jsp多站点图书管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 多站点图书管理系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5…

git常用命令小记

(文章正在持续更新中) git init - 在当前目录下初始化一个新的 Git 仓库。 git clone [url] - 克隆远程仓库到本地。 git add [file] - 将文件添加到暂存区。 git commit -m "commit message" - 将添加到暂存区的文件提交到本地仓库。 git pus…

STM32 Nucleo-64 boards 外设资源引脚对应关系图

STM32 Nucleo-64 boards 外设资源引脚对应关系图 1. STM32 NUCLEO-F103RB1.1 串口对应关系图1.2 I2C对应关系图 【参考博文】 1. STM32 NUCLEO-F103RB 1.1 串口对应关系图 1.2 I2C对应关系图 注意:STM32 NUCLEO-F103RB 在Arduino 端子分配的 I2C 重映射为 PB8 PB9 …

Python词频统计(数据整理)

请编写程序,对一段英文文本,统计其中所有不同单词的个数,以及词频最大的前10%的单词。 输入格式: 输入给出一段非空文本,最后以符号#结尾。输入保证存在至少10个不同的单词。 输出格式: 在第一行中输出文本中所有不同单词的个数…

101. 对称二叉树

101. 对称二叉树 判断二叉树是否对称 check就完事儿了 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val…

macOS 13.6上Sublime无法使用Package Control问题

macOS 13.6上Sublime无法使用Package Control问题 最近升级系统重装Sublime后发现Package Control不能使用,在Settings -> Package Control下输入Install没有任何提示。 然后使用 CTRL 或者 View -> Show Console 查看日志,看到打印了一堆错误…

直击2023云栖大会-大模型时代到来:“计算,为了无法计算的价值”

2023年的云栖大会以“计算,为了无法计算的价值”为主题,强调了计算技术在现代社会中的重要性,特别是在大模型时代到来的背景下。 大模型时代指的是以深度学习为代表的人工智能技术的快速发展,这些技术需要大量的计算资源来训练和优…

深度学习设计基于Tensorflow卷积神经网络猫的品种识别系统

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 基于Tensorflow卷积神经网络的猫的品种识别系统可以用于自动识别猫的品种类型。下面我将为您介绍一下这个系统的基本…

Python函数的基本使用(一)

Python函数的基本使用(一) 一、函数概述二、函数的定义2.1 函数的语法2.2 语法说明2.3 函数定义的方式2.4 总结 三、函数的调用3.1 函数调用语法3.2 语法说明3.3 函数调用 四、函数的参数4.1 参数的分类4.2 必需参数4.3 默认值参数4.4 关键字参数4.5 不定…

路由策略,gRPC 路由如何实现

目录 一、为啥我们要路由策略: 二、基于gRPC 路由策略 一、为啥我们要路由策略: 我们可以重新回到调用方发起 RPC 调用的流程。在 RPC 发起真实请求的时候,有一个步骤就是从服务提供方节点集合里面选择一个合适的节点(就是我们…