聚合函数(基础版)

news2024/11/29 12:36:53

QUESTION ONE:
在这里插入图片描述

# Write your MySQL query statement below
select id,movie,description,rating
from cinema
where description <> 'boring' and mod(id,2) = 1
order by rating desc

很简单的两个条件,一个通过 <> 解决不等于的情况,而确定奇数,可以 id % 2 = 1,也可以使用mod(id,2) = 1实现。

QUESTION TWO:
在这里插入图片描述

# Write your MySQL query statement below
select product_id,round(sum(sum_price)/sum(units),2) average_price from 
(select p.product_id as product_id,
   price * units as sum_price,
   units as units
   from Prices p left join UnitsSold u
   on u.purchase_date between p.start_date and p.end_date and p.product_id = u.product_id) t
group by product_id 

本题要能想到构建临时表,要得到一个product_id的产品价值总和,很容易想到对price * units,但是price 和 units是需要通过时间确认的,所以我们连接两表,连接的条件有两个,一个就是时间的限定,通过between and实现实现限制,还有一个条件便是product_id一致,这个如果忽略的话,不同的id可能存在时间段符合的情况。有了product_id、对应时间的总价值、units,然后就是简单的数值处理,最后按照product_id排序。

QUESTION THREE:
在这里插入图片描述

# Write your MySQL query statement below
select p.Project_id, round(sum(experience_years)/count(1),2) as average_years from Project p
left join Employee e
on p.employee_id = e.employee_id 
group by p.Project_id

本题主要是要得到每个project中的experience总和以及员工人数总和,因此我们需要将两张表的数据进行拼接,让临时表同时拥有Project_id和experience_years,拼接条件为employee_id 一致,最后通过round函数实现保留两位小数的四舍五入的操作。

QUESTION FOUR:
在这里插入图片描述

# Write your MySQL query statement below
select r.contest_id, round(count(1) / (select count(1) from Users ) * 100,2) as percentage 
from Register r left join Users u
on r.user_id = u.user_id
group by contest_id
order by percentage desc,r.contest_id

和上一题的情况类似,我们需要联立两表后进行计算,而percentage 的分子为分组后每个contest_id对应的user_id的数量,而分母为Users 的数据条数,最后按照条件进行排序。

QUESTION FIVE:
在这里插入图片描述

# Write your MySQL query statement below
select query_name,
round(avg(rating/position),2) as quality,
round(sum(if(rating < 3,1,0)) * 100 / count(1),2) as poor_query_percentage 
from Queries 
group by query_name

本题和前面的题目相比,变为了只有一张表进行数据处理,quality的求值可以直接通过avg聚合函数实现,这样省去了许多的sql,而poor_query_percentage 的数值可以 通过if聚合函数实现,判断rating是否小于三来对结果进行求和。

QUESTION SIX:
在这里插入图片描述

# Write your MySQL query statement below
select date_format(trans_date,'%Y-%m') as month,country,
count(trans_date) as trans_count,
sum(if(state = 'approved',1,0)) as approved_count,
sum(amount) as trans_total_amount,
sum(if(state = 'approved',amount,0)) as approved_total_amount
from Transactions 
group by month,country

本题类似一个大杂烩,涉及到了比较基础的聚合函数的使用,date_format能使日期按照自定义的形式进行转变,count进行计数,if进行判断.

QUESTION SEVEN:
在这里插入图片描述

# Write your MySQL query statement below
select round(sum(if(order_date = customer_pref_delivery_date,1,0) *100) / count(*),2) as immediate_percentage 
from Delivery 
where (customer_id,order_date) in
    (select customer_id,min(order_date)
    from Delivery
    group by customer_id)

本题的难点在于如何判断订单的日期是不是首日,其实转变思想,只需要取最小的order_date即可,让最后的order_date结果在 “取最小的order_date”的集合中即可,当然还需要customer_id来确定,是不是同一个顾客。其他知识点主要是聚合函数的使用。

QUESTION EIGHT:
在这里插入图片描述

select round(avg(a.event_date is not null), 2) fraction
from 
    (select player_id, min(event_date) as login
    from activity
    group by player_id) p 
left join activity a 
on p.player_id=a.player_id and datediff(a.event_date, p.login)=1

涉及到今天和明天的时间对比,但我们只有一张表,很容易想到将一张表分为两张表,两张表的player_id一致,但是得取出首日,通过min获取最小的日期,然后两表联立,判断是否存在比首日大一天的日期数据,如果存在event_date就会有值,否则为null,这样我们就可以使用avg聚合函数直接算出比例。

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

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

相关文章

java基础知识一

1、Java语言概述 1、java的出现标志着真正的分布式系统的到来 2、Java与c的区别 2.1、全局变量 Java中没有全局变量&#xff0c;使用类中的公共的静态变量作为这个类的全局变量 2.2、指针 Java中没有任何在指针操作 2.3、条件转移指令 Java中没有goto语句&#xff0c;通…

【day 01】初始vue

Vue的相关背景&#xff1a; vue2 > vue3 >vue实战 vue Taylor otwell (程序员中的网红) 框架 库 &#xff08;功能 方法&#xff09;axios 框架 生态 引入第三方功能库 社区 Vue2 Vue3 需要准备的小工具 vscode : snipper Vetur 浏览器需要准备 Vue Devtools Vue 引入方式…

nvm版本控制工具安装及使用

一、nvm介绍 nvm全英文也叫node.js version management&#xff0c;是一个nodejs的版本管理工具。nvm和n都是node.js版本管理工具&#xff0c;为了解决node.js各种版本存在不兼容现象可以通过它可以安装和切换不同版本的node.js。 二、nvm下载安装及使用 2.1 nvm下载 安装包…

【C++】容器篇(三)—— stack的基本介绍及其模拟实现

前言&#xff1a; 在之前的学习中我们已经了解了 vector 和 list &#xff0c;今天我将带领学习的是关于STL库中的 stack的学习&#xff01;&#xff01;&#xff01; 目录 &#xff08;一&#xff09;基本介绍 1、基本概念 2、容器适配器 &#xff08;二&#xff09;基本使…

Flutter 笔记 | Flutter 功能性组件

拦截返回键&#xff08;WillPopScope&#xff09; 为了避免用户误触返回按钮而导致 App 退出&#xff0c;在很多 App 中都拦截了用户点击返回键的按钮&#xff0c;然后进行一些防误触判断&#xff0c;比如当用户在某一个时间段内点击两次时&#xff0c;才会认为用户是要退出&a…

docker 服务环境搭建(mysql、rabbitmq、redis、nginx、springboot)

一般来说一个项目&#xff0c;百分之80都会用到以上这些&#xff0c;尤其是产品初期的demo 这些我都写过博客&#xff0c;但是我每次要去安装&#xff0c;都要去我不同的博客里面翻找&#xff0c;很烦&#xff0c;把他们聚在一起&#xff0c;方便我以后cv&#xff0c;就是这篇博…

注意力Transformer

注意力 注意力分为两步&#xff1a; 计算注意力分布 α \alpha α 其实就是&#xff0c;打分函数进行打分&#xff0c;然后softmax进行归一化 根据 α \alpha α来计算输入信息的加权平均&#xff08;软注意力&#xff09; 其选择的信息是所有输入向量在注意力下的分布 打…

基于中序有序的二叉搜索树

文章目录 什么是二叉搜索树二叉搜索树的中序遍历二叉搜索树的查找查找的非递归写法查找的递归写法 二叉搜索树的插入非递归递归 二叉搜索树的删除非递归递归 二叉搜索树的使用场景k模型kv模型 什么是二叉搜索树 二叉搜索树是普通二叉树的升级&#xff0c;普通二叉树除了存储数…

3、js - 垃圾回收机制

1、基础概念 &#xff08;1&#xff09;js内存的生命周期 -1- 内存分配&#xff1a;当声明变量、函数、对象时&#xff0c;系统会自动分配内存给它们 -2- 内存使用&#xff1a;即读写内存&#xff0c;也就是使用变量、函数 -3- 内存回收&#xff1a;使用完毕&#xff0c;由垃圾…

时间跟踪工具:Timemator Mac汉化版

Timemator是一款Mac平台上的时间跟踪工具&#xff0c;它可以帮助用户记录和分析日常工作和任务所花费的时间。Timemator提供了多种时间跟踪功能&#xff0c;包括自动跟踪应用程序和文档、手动添加时间记录、设置定时器等&#xff0c;让用户可以轻松记录和管理时间。 活动时间表…

互联网及SaaS行业如何落地体验管理?

3月25日&#xff0c;「体验家XMPlus」携手PMTalk成功举办了以“2023用户体验新趋势与数据增长实践”为主题的线下沙龙。 在本次活动中&#xff0c;有100多位来自不同企业的产品经理前来参与&#xff0c;大家聚集一起互相交流、分享经验。“体验家”的产品总监李若晨先生也进行了…

[RSA议题分析] Aikido Turning EDRs to malicious wipers using 0-day exploits

文章目录 简介议题分析wiperEDRWindows of Opportunity 总结 简介 本篇议题是由SafeBreach实验室的Or Yair带来的&#xff0c;主要通过利用EDR的删除恶意软件的能力和windows软连接与延迟删除文件的能力去制造一个可以在普通户权限下删除任意文件的恶意软件 - Aikido。这本质上…

科技云报道:汽车云,云计算换挡后的下一个“赛点”?

科技云报道原创。 从去年开始&#xff0c;汽车云似乎成为了云计算赛道的“香饽饽”。 尤其是在下半年&#xff0c;无论是阿里、腾讯、华为三大云巨头&#xff0c;还是百度云、京东云、字节云等奋力争夺“第四朵云”的玩家&#xff0c;均已各种形式“刷新”了其汽车云战略。玩…

Revit中窗族的立面出图设置和构件显隐

​  一、窗族的立面出图设置 Revit中&#xff0c;除了平面的出图设置以外还有立面的出图设置。 例如&#xff1a;如何在立面中&#xff0c;使窗户在精细详细程度显示的是窗的全部主体结构而在粗略/中等详细程度下是显示这样的样式呢? 在窗族样板中&#xff0c;打开立面&…

unity uitoolkit学习

使用UI Toolkit Debugger查看元素 1、打开面板 2、找到元素 在UI Builder窗体&#xff0c;别忘了打开Preview再选择元素 3、可以选择不同类型的窗体 4、查看元素的样式 需要注意的是下面的样式会覆盖上面的 5、调试 修改内置控件样式 1、找到PanelSettings>Theme St…

如果STM32/GD32一类的ARM单片机解除读写保护的方法

文章目录 前言一、打开软件二、连接到目标芯片1.连接2.若目标芯片无写包含3. 若存在读写保护 三、解除读写保护的操作&#xff1a;1. 打开Options Bytes对话框2. 操作步骤 四、工具下载链接 前言 有时候啊&#xff0c;使用ST-Link给STM32一类的ARM单片机下载程序的时候&#x…

Fastjson过滤器用法

fastjson git地址&#xff1a;https://github.com/alibaba/fastjson/wiki SimplePropertyPreFilter 用法 用于过滤某个属性 SimplePropertyPreFilter filter new SimplePropertyPreFilter();filter.getExcludes().add("gender");A a new A(1,"zhangsan"…

CSS样式的三种引入方式及优先级

说明&#xff1a;网页开发有三种技术&#xff0c;分别是html、css和js&#xff0c;分别对应页面的结构、表现和动作。css样式引入&#xff0c;是指把对页面的渲染作用到html上&#xff0c;有以下三种方式&#xff1a;行内式、内嵌式和外联式。 第一种&#xff1a;行内式&#…

噶了呀,现在的00后这么卷的吗?

现在的小年轻真的卷得过分了。前段时间我们公司来了个00年的&#xff0c;工作没两年&#xff0c;跳槽到我们公司起薪20K&#xff0c;都快接近我了。 后来才知道人家是个卷王&#xff0c;从早干到晚就差搬张床到工位睡觉了。 最近和他聊了一次天&#xff0c;原来这位小老弟家里…

KDZD自动脱扣型绝缘靴(手套)耐压试验装置支架

一、概述 KDZD自动脱扣型绝缘靴&#xff08;手套&#xff09;耐压试验装置支架是根据《DLT 976-2017 带电作业工具、装置和设备预防性试验规程》、《DLT 1476-2015电力安全工器具预防性试验规程》、《GBT 17622-2008带电作业用绝缘手套》、《CB21148 2020足部防护 安全鞋》等相…