首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SQL数据分析实战:好用的窗口函数

在日常工作中比较常见的例子比如求学生的单科成绩排名、求前三名等等之类的。...成绩表 面对上面这份数据,我们要求各科目学生们得分排名,就可以用到排序函数。...排名值相同时,序号相同,但序号中存在间隙(1,1,1,4,5这种) 我们要获取各科目排名第一的学生及得分,就可以再加个条件判断即可,需要注意这里用到了子查询。...查询结果如下: NTILE(2) NTILE(n)在数据分析中应用较多,比如由于数据量大,需要将数据平均分配到n个并行的进程分别计算,此时就可以用NTILE(n)对数据进行分组(由于记录数不一定被...的朋友得分120,超过66.66%的学生成绩在118分及以上。

75820

day26.MySQL【Python教程】

-h后面写要连接的主机ip地址 -u后面写连接的用户名 -p回车后写密码 数据库操作 创建数据库 ? 删除数据库 ? 切换数据库 ? 查看当前选择的数据库 ? 表操作 查看当前数据库中所有表 ?...---- 2.3分组 按照字段分组,表示此字段相同的数据会被放到一个组中 分组后,只能查询出相同的数据列,对于有差异的数据列无法出现在结果集中 可以对分组后的数据进行统计,做聚合运算 语法: ?...查询各城市人数 ? 分组后的数据筛选 语法: ? having后面的条件运算符与where的相同 查询男生总人数 ?...,而不是全部 作业 对学生表、科目表进行数据的查询 ---- 三、MySQL高级 实体与实体之间有3种对应关系,这些关系也需要存储下来 在开发中需要对存储的数据进行一些处理,用到内置的一些函数 视图用于完成查询语句的封装...查询男生的姓名、总分 ? 查询科目的名称、平均分 ? 查询未删除科目的名称、最高分、平均分 ?

2.2K60
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    图解SQL面试题:经典topN问题

    表内容如下: 问题:查找每个学生成绩最高的2个科目 【解题思路】 1.看到问题中要查“每个”学生最高的成绩。还记得我们之前课程里讲过的吗?当有“每个”出现的时候,就要想到是要分组了。...这里是“每个学生”,结合表的结构,是按学生“姓名”来分组。 2.将表按学生姓名分组后,把成绩按降序排列,排在最前面的2个就是我们要找的“成绩最高的2个科目”。...【解题步骤】 步骤一:按姓名分组(partiotion by 姓名)、并按成绩降序排列(order by 成绩 desc),套入窗口函数的语法,就是下面的sql语句: select *,...,每个同学成绩最好的2个科目,就是要求的解。...想得到这个解,只要提取出“ranking”值小于等于2的数据就可以了。

    43410

    SQL干货 | 窗口函数的使用

    Mysql从8.0版本开始,也和Sql Server、Oracle一样支持在查询中使用窗口函数,本文将根据官方文档,通过实例介绍窗口函数并举例分组排序函数的使用。...在这个例子中sum()函数作为窗口函数,通过对‘学生’分区后,加总各个科目的分数得到总分,得分结果与sum()聚合函数的结果一致,但结果中保留了每一行的信息,出现了重复的总分行。...以下可以实现对学生的科目分数降序排列,并得出学生的科目最高分 SELECT 学生,科目,分数, MAX(分数) OVER (PARTITION BY 学生 ORDER BY 分数 DESC...(PARTITION BY 学生 ORDER BY 分数 ASC) AS '最高分' FROM Marks;-- 结果相同SELECT 学生,科目,分数...以本文数据为例,将60-90分的分数等分为4组,即第1组为[90, 82.5),第2组为[82.5, 75),第3组为[75, 67.5),第4组为[67.5, 60] SELECT 学生,科目,分数

    1.5K10

    MySQL数据库常用命令

    (14)按chinese排序,显示4,5行数据: select * from score order by chinese limit 3,2; (15)查询学生表中5到10行的数据: select *...注意:分组之后查询其他函数结果是不正确的 1、分组函数:group by (1)按班级分组,查询出每班数学最高分: select class,max(maths) from score group by...class; (2)不分班级查询总人数最高分: select max(maths) from score; 注释:max 最大值 (3)按班级分组,查询出每班数学最低分: select class,min...avg 平均值 (6)按班级分组,查询出每班学生总数: select class,count(*) from score group by class; 注释:count 返回匹配指定条件的行数 2、语句执行顺序...student.id=score.stu_id and address like '湖南%'; (17)查询每个科目的最高分的学生信息: select * from student where

    2.2K30

    MATLAB数据挖掘用改进的K-Means(K-均值)聚类算法分析高校学生的期末考试成绩数据

    常用的聚类算法常用的聚类算法有:K-MEANS、K-MEDOIDS、BIRCH、CURE、DBSCAN、STING。...(3)聚类(分组):根据需要选择合适的相似性度量函数对数据集中的数据对象相似程度进行度量,以此进行数据对象的聚类(分组)。...目前最常用的的相似性度量函数为欧式距离在MATLAB中应用K-MEANS算法数据的预处理本研究的数据是某高校学生的期末考试成绩,成绩表包括以下字段: x1为“电子商务”科目成绩,x2为“C语言概论”科目基础知识...(4)聚类结果结果表明:簇1中的学生都是考试成绩中等的,簇2中的学生考试成绩较高,簇2中的学生考试成绩较差,可见,大部分学生的期末考试成绩处于中等水平;各变量在各簇中的显著程度均较大,表明学生对各科目的学习分化程度较高...----最受欢迎的见解1.R语言k-Shape算法股票价格时间序列聚类2.R语言基于温度对城市层次聚类、kmean聚类、主成分分析和Voronoi图3.R语言对用电负荷时间序列数据进行K-medoids

    77510

    pandas基础:idxmax方法,如何在数据框架中基于条件获取第一行

    例如,有4名ID为0,1,2,3的学生的测试分数,由数据框架索引表示。 图1 idxmax()将帮助查找数据框架的最大测试分数。...默认情况下,axis=0: 学生3的Math测试分数最高 学生0的English测试分数最高 学生3的CS测试分数最高 图2 还可以设置axis=1,以找到每个学生得分最高的科目。...图3 基于条件在数据框架中获取第一行 现在我们知道了,idxmax返回数据框架最大值第一次出现的索引。那么,我们可以使用此功能根据特定条件帮助查找数据框架中的第一行。...例如,假设有SPY股票连续6天的股价,我们希望找到在股价超过400美元时的第一行/日期。 图4 让我们按步骤进行分解,首先对价格进行“筛选”,检查价格是否大于400。此操作的结果是布尔索引。...图6 现在,我们可以将idxmax应用于上述内容: 值1将是此处的最大值 值1首次出现在2022-05-10 idxmax返回该索引 图7 注:本文学习整理自pythoninoffice.com,供有兴趣的朋友学习参考

    8.6K20

    SQL 找出分组中具有极值的行

    你可能也遇到过这种需求:找出每个部门入职最早的员工的信息;获取每个科目最高分的学生信息;获取用户最近一次的完整登录信息。...这些需求有两个共同点:一是需要做分组,有按部门分组、有按科目、也有按用户分组;二是在分组里面找到存在极值的行,是整行数据,而不只是极值。...就拿 emp 举例,要从 emp 表中获取每个部门薪资最高的员工的信息。emp 表的数据如下: ? 最终的查询结果如下图。 ? 要实现这个查询功能,有多少种实现方法呢?...rank() 或者 dense_rank(),而不能使用 row_number() ,因为有可能存在一个部门里两名或者和更多员工的薪资都是最高的,row_number() 不会给相同的排序条件分配同一个序号...子查询 如果你的数据库还不支持窗口函数,那可以先对 emp 分组,取出每个部门中的最高薪资,再和原表做一次关联就能获取到正确的结果。

    1.8K30

    把握时代变革机遇,《K12在线教育行业广告策略用户调研报告》发布

    同时,有58.7%已参加K12辅导班的学生表示尝试过不同形式的线上辅导班。家长教育理念的转变以及自主选择意识的增强为K12在线教育机构的发展带来了新的增长空间。...特征一:学生侧科目渗透率更高 从科目上来看,英语、数学和语文三大主课在家长侧的渗透率较高。但除英语和语文外,其他科目在学生侧的渗透率都要高于家长侧,拥有亲身体验的学生们对于科目的认知明显高于家长。...但需要注意的是,课程付费行为通常由家长决定。而且随着学生年级的增长,家长们对于孩子学习的关注度会不断提升,对于各品牌的认知度及付费率也会更高。...另外,值得注意的是,44.3%的家长对价格优惠信息较感兴趣,有21.5%的学生对有明星代言的品牌更具好感,所以优惠政策和明星代言也是教育品牌在营销时必须考虑的两点因素。...,如“刻苦学习可以改变原生家庭命运”等; 产品卖点上,重点突出家长与学生共同的核心利益诉求点,如师资力量、机构品牌以及课程内容等; 在版位选择上,可针对一二线城市家长增加在微信朋友圈等广告位的投放。

    71030

    concat()、concat_ws()、group_concat()函数使用

    以下我准备了几个案例 小伙伴们可以选择性的去阅读 并且把代码复制到MySQL中执行以下就可以知道用法了!...一般使用group_concat()函数,必须是存在group by 分组的情况下 才能使用这个函数 案例3 我们再来看一个案例, 首先我们准备以下测试数据 准备一个student学生表、MySQL代码如下...需求1: 以stuName学生名称分组,把得分数score字段的值打印在一行,逗号分隔(默认) SQL如下 select stuName, GROUP_CONCAT(score) as '当前这个学生的得分数...[方法1] #--首先我们可以把这个问题拆分成两个部分 #--1.就是找出语文、数学、外语 三门课的最低分 这一步还是比较简单的我们可以使用分组查询就可以解决 #--分析问题后得出SQL方案 按照科目进行分组查询...我们可以分析出如下SQL, #--这里的分组条件还是以科目进行分组, 分组之后还是GROUP_CONCAT()函数用逗号连接起相对应的所有分数,然后用SUBSTRING_INDEX()函数提取连接字符中的第一个字符作为结果

    1.2K30

    MySQL中concat()、concat_ws()、group_concat()函数

    以下我准备了几个案例 小伙伴们可以选择性的去阅读 并且把代码复制到MySQL中执行以下就可以知道用法了!....一般使用group_concat()函数,必须是存在group by 分组的情况下 才能使用这个函数案例3我们再来看一个案例, 首先我们准备以下测试数据准备一个student学生表、MySQL代码如下...需求1: 以stuName学生名称分组,把得分数score字段的值打印在一行,逗号分隔(默认) SQL如下 select stuName, GROUP_CONCAT(score) as '当前这个学生的得分数...方法1#--首先我们可以把这个问题拆分成两个部分#--1.就是找出语文、数学、外语 三门课的最低分 这一步还是比较简单的我们可以使用分组查询就可以解决#--分析问题后得出SQL方案 按照科目进行分组查询...我们可以分析出如下SQL, #--这里的分组条件还是以科目进行分组, 分组之后还是GROUP_CONCAT()函数用逗号连接起相对应的所有分数,然后用SUBSTRING_INDEX()函数提取连接字符中的第一个字符作为结果

    4.2K30

    【视频】因子分析简介及R语言应用实例:对地区经济研究分析重庆市经济指标

    利用各公共因子方差贡献率计算综合得分,并计算综合得分=因子1的方差贡献率*因子1的得分+因子2的方差贡献率*因子2的得分+因子3的方差贡献率*因子3的得分。...将数据按综合得分降序排列,得到部分因子得分和综合得分情况如下图所示: 结果讨论 基于上述因子得分,可以得出2012年重庆38个区县的经济发展状况如下: 1、根据经济实力因子F1得分大于1的依次有渝中区...基于主因子得分的聚类分析 系统聚类分析 聚类分析又称群分析,就是将数据分组成为多个类。在同一个类内对象之间具有较高的相似度,不同类之间的对象差别较大。...基于主因子得分对重庆市38个区县经济发展分析,采用聚类方法选择组间链接法,计算距离选择平方欧式距离,标准化数据才用标准正太数据化处理。...得到如下结果: rct.st(hc,k = 6, border = "red") 由树状图可知,可以将重庆各区县按经济中和实力实际情况分为六类: 第一类只包括渝中区,渝中区是重庆市的中心城市,是重庆市的政治经济文化中心

    30000

    MySQL高级查询

    gradeID IN (SELECT gradeID FROM grade WHERE gradeName IN('大一','大二'))    -- 查询参加 最近一次 高等数学-1 考试成绩的学生的最高分和最低分...--  not in :不在某个范围之内 -- 查询未参加 “高等数学-1” 课程最近一次考试的在读学生名单 -- 01.根据  科目名称 获取 科目编号 SELECT SubjectNo  FROM ...)   -- 统计每门课程平均分各是多少 GROUP BY  列名 分组 SELECT subjectno,AVG(studentresult)  FROM result GROUP BY  subjectno...AVG(studentresult)>60   -- 分组之后的条件 -- 统计每门课程平均分各是多少 降序排列 SELECT subjectno,AVG(studentresult)  FROM result...`GradeID` -- 查询 考试 课程编号是1的 学生姓名 以及年级名称 和科目名称以及成绩 01.

    3.3K90

    MATLAB用改进K-Means(K-均值)聚类算法数据挖掘高校学生的期末考试成绩|附代码数据

    均值算法对数据进行了分析 常用的聚类算法 常用的聚类算法有:K-MEANS、K-MEDOIDS、BIRCH、CURE、DBSCAN、STING。...(2)特征选择及特征提取:将由数据预处理过程得到的最初始的特征中的最有效的特征选择出来,并将选取出来的最有效特征存放于特定的向量中,然后对这些有效特征进行相应的转换,得到新的有效突出特征。...(3)聚类(分组):根据需要选择合适的相似性度量函数对数据集中的数据对象相似程度进行度量,以此进行数据对象的聚类(分组)。...在MATLAB中应用K-MEANS算法 数据的预处理 本研究的数据是某高校学生的期末考试成绩,成绩表包括以下字段:x1为“电子商务”科目成绩,x2为“C语言概论”科目基础知识。...(4)聚类结果 结果表明:簇1中的学生都是考试成绩中等的,簇2中的学生考试成绩较高,簇2中的学生考试成绩较差,可见,大部分学生的期末考试成绩处于中等水平;各变量在各簇中的显著程度均较大,表明学生对各科目的学习分化程度较高

    21500

    MATLAB用改进K-Means(K-均值)聚类算法数据挖掘高校学生的期末考试成绩|附代码数据

    均值算法对数据进行了分析 常用的聚类算法 常用的聚类算法有:K-MEANS、K-MEDOIDS、BIRCH、CURE、DBSCAN、STING。...(3)聚类(分组):根据需要选择合适的相似性度量函数对数据集中的数据对象相似程度进行度量,以此进行数据对象的聚类(分组)。...在MATLAB中应用K-MEANS算法 数据的预处理 本研究的数据是某高校学生的期末考试成绩,成绩表包括以下字段:x1为“电子商务”科目成绩,x2为“C语言概论”科目基础知识。...其中,数据已经经过标准化和中心化的预处理: (1)补充缺失值。对退学、转学、休学、缺考造成的数据缺失采用平均值法,以该科目的平均分数填充。 (2)规范化数据。...(4)聚类结果 结果表明:簇1中的学生都是考试成绩中等的,簇2中的学生考试成绩较高,簇2中的学生考试成绩较差,可见,大部分学生的期末考试成绩处于中等水平;各变量在各簇中的显著程度均较大,表明学生对各科目的学习分化程度较高

    23320

    MATLAB用改进K-Means(K-均值)聚类算法数据挖掘高校学生的期末考试成绩|附代码数据

    均值算法对数据进行了分析 常用的聚类算法 常用的聚类算法有:K-MEANS、K-MEDOIDS、BIRCH、CURE、DBSCAN、STING。...(3)聚类(分组):根据需要选择合适的相似性度量函数对数据集中的数据对象相似程度进行度量,以此进行数据对象的聚类(分组)。...在MATLAB中应用K-MEANS算法 数据的预处理 本研究的数据是某高校学生的期末考试成绩,成绩表包括以下字段:x1为“电子商务”科目成绩,x2为“C语言概论”科目基础知识。...其中,数据已经经过标准化和中心化的预处理: (1)补充缺失值。对退学、转学、休学、缺考造成的数据缺失采用平均值法,以该科目的平均分数填充。 (2)规范化数据。...(4)聚类结果 结果表明:簇1中的学生都是考试成绩中等的,簇2中的学生考试成绩较高,簇2中的学生考试成绩较差,可见,大部分学生的期末考试成绩处于中等水平;各变量在各簇中的显著程度均较大,表明学生对各科目的学习分化程度较高

    31600

    SQL语句汇总(三)——聚合函数、分组、子查询及组合查询

    注:这里只能求出最大年龄,要想显示年龄最大的学生全部信息,需要用到之后的子查询。 数据分组(GROUP BY): SQL中数据可以按列名分组,搭配聚合函数十分实用。...现有一数据表如下: ? 根据之前的知识我们可以查出每门科目的最高分,但是要想查出取得最高分的学生信息就做不到了。这时就需要用到子查询来取得完整的信息。 什么是子查询?子查询就是嵌套在主查询中的查询。...但并不是每个位置嵌套子查询都是有意义并实用的,这里对几种有实际意义的子查询进行说明。 现有表两张:一张学生表、一张班表。id相关联 ? ?...别名在子查询及联接查询中的应用有着很好效果,当两张表有相同列名或者为了加强可读性,给表加上不同的别名,就能很好的区分哪些列属于哪张表。...在WHERE中嵌套: 现要查出C语言成绩最高的学生的信息: SELECT * FROM t_student WHERE student_subject='C语言' AND student_score>=

    5.1K30
    领券