当前位置: 首页 > news >正文

MySQL基础练习题37-查找结果的质量和占比

目录

题目

准备数据

分析数据

总结


题目

找出每次的 query_name 、 quality 和 poor_query_percentage

quality 和 poor_query_percentage 都应 四舍五入到小数点后两位 。

准备数据

## 创建库
create database db;
use db;## 创建表
Create table If Not Exists Queries (query_name varchar(30), result varchar(50), position int, rating int);## 向表中插入数据
Truncate table Queries;
insert into Queries (query_name, result, position, rating) values ('Dog', 'Golden Retriever', '1', '5');
insert into Queries (query_name, result, position, rating) values ('Dog', 'German Shepherd', '2', '5');
insert into Queries (query_name, result, position, rating) values ('Dog', 'Mule', '200', '1');
insert into Queries (query_name, result, position, rating) values ('Cat', 'Shirazi', '5', '2');
insert into Queries (query_name, result, position, rating) values ('Cat', 'Siamese', '3', '3');
insert into Queries (query_name, result, position, rating) values ('Cat', 'Sphynx', '7', '4');

分析数据

Dog 查询结果的质量为 ((5 / 1) + (5 / 2) + (1 / 200)) / 3 = 2.50

Dog 查询结果的劣质查询百分比为 (1 / 3) * 100 = 33.33

Cat 查询结果的质量为 ((2 / 5) + (3 / 3) + (4 / 7)) / 3 = 0.66

Cat 查询结果的劣质查询百分比为 (1 / 3) * 100 = 33.33

selectquery_name,round(avg(rating/position),2) as quality,round(avg(rating<3)*100,2) as poor_query_percentage
from queries
group by query_name
having query_name is not null;

总结

我们先逐个分析

前提是需要分组,分完组之后才可以使用聚合函数。

1.avg(rating/position)是把所有的rating除以所有的position。

selectquery_name,sum(position),sum(rating),avg(rating/position),round(avg(rating/position),2) as quality
from queries
group by query_name
having query_name is not null;

2.avg(rating<3)*100,过滤rating<3

selectquery_name,count(rating),sum(rating<3),avg(rating<3),round(avg(rating<3)*100,2) as poor_query_percentage
from queries
group by query_name
having query_name is not null;

注意:count()函数是不支持直接添加大于或者小于。因为count函数是用来统计满足特定条件的记录数,而不是用来比较或筛选数据。

http://www.lryc.cn/news/423118.html

相关文章:

  • 酒店行业如何利用XML进行营销短信
  • 【模型】TFLiteModel
  • 【Kubernetes】Service 概念与实战
  • RTSP|RTMP流如何指定坐标位置和分辨率获取RGB数据实时渲染和算法分析
  • 基于ssm+vue+uniapp的英语学习交流平台小程序
  • 如何判断一个TimerTask是否已经完成
  • Android常用面试题
  • JSON与Jsoncpp库:数据交换的灵活选择
  • salesforce rich text 字段支持html中内嵌JavaScript吗
  • Ubuntu24.04、22.04或20.04安装Golang方法教程
  • 学习记录第二十二天
  • 红酒与艺术展览:品味艺术与风味的双重盛宴
  • 1Panel配置
  • 场外期权是如何定价的?场外期权定价的基本原理是什么?
  • vue中数据持久化
  • 小白零基础学数学建模系列-Day3-线性回归模型的构建与评估
  • Flutter中的 extended_nested_scroll_view 库:介绍与使用指南
  • Elasticsearch 综合搜索案例解析
  • Web存储革命:揭秘JavaScript的会话存储(sessionStorage)
  • 基于python的百度迁徙迁入、迁出数据分析(九)
  • 2025上海礼品展 华东礼品工艺品展览会
  • Flink开发(一):概述与基础
  • GD32E503实现串口中断收发功能
  • 照片怎么提取文字?分享5种简单好用的提取方法
  • 最佳云服务器推荐:三丰云免费虚拟主机和云服务器
  • IPKISS Tutorial 目录(目前 45 篇 持续更新中,部分教程尚未制作成目录)
  • 加强混合工作时代的组织网络安全态势
  • vivado报错:file ended before end of clause
  • 基于asp.net的webform框架的校园点餐系统源码
  • 俞敏洪,真窝囊?