sql查询某表中所有男生,无需基础知识2周全面解析SQL——

有不少人都想知道的无需基础知识2周全面解析SQL——和一些关于sql查询某表中所有男生相关话题,小编有详细解说,希望帮助到大家。


46年前,两位年轻的IBM研究人员提出了一种新的数据库语言。它是一种关系语言,追求所有数据都可以轻松地以声明方式操作的理念。46年来,我们见证了无数数据库的诞生和消亡,以及无数数据处理方法的诞生和消亡,但即使在今天,SQL仍然是数据分析师和关系数据库的查询语言的必备技能。正如LukasEder所说,BI工具使用各种SQL与数据交互。“SQL是一种神秘的工具,只有它自己的力量才能超越。”今天我们就来学习如何使用这种神秘的语言进行汇总分析!


1总结分析


首先我们进入SQL的常用函数。学习这些共同特征为总结分析打开了大门。


count函数该函数返回满足指定条件的行数。


count函数返回指定列中值的数量。


SELECTCOUNTcolumn_nameFROMtable_nameWHERE条件;


从教师中选择COUNT个教师姓名。


COUNT函数返回表中的记录数。


从老师那里选择一个号码。


COUNTDISTINCTcolumn_name函数返回指定列的唯一值的数量。


从学生中选择COUNTDISTINCT姓名。


sum函数返回数字列的总和。


SELECTSUMcolumn_nameFROMtable_nameWHERE条件;


在分数中,选择SUM分数。


AVG函数返回一列数字的平均值。


SELECTAVGcolumn_nameFROMtable_nameWHERE条件


从分数中选择平均分数。


MIN函数返回所选列的最小值。


SELECTMINcolumn_nameFROMtable_nameWHERE条件;MAX函数返回所选列的最大值。


SELECTMAXcolumn_nameFROMtable_nameWHERE条件;


选择最高分、MIN`score`FROMScore。


面试题


查询科目号“0002”的总分。


从分数中选择总分,其中课程编号=39;


查询选择课程的学生人数。


SELECTCOUNTDISTINCTStudentNumberFROMScoreWHERECourseNumber不为NULL。


2组


学习基本的汇总功能后,您将学习如何对数据进行分组。在SQL中,您可以使用group-by语句对数据进行分组。


GROUPBY语句与聚合函数一起使用,根据一列或多列对结果集进行分组。


从表名中选择列名GROUPBY列名;注意任何出现在分组依据之后的字段都必须出现在选择之后,任何未出现在聚合函数中的字段也必须出现在分组依据之后。


栗子“学生”表中按性别和人数分组


SELECT性别,COUNTnameAS学生人数FROMStudentGROUPBY‘gender’;


此外,我们还统计了出生日期大于1990年1月1日的学生,并按性别分组。


选择性别,将姓名计为学生人数--从学生中运行顺序4--1如果出生日期>39--2按性别分组--3;


注意SQL执行顺序。


面试题


查看每个科目的最高分和最低分


从scoreGROUPBY课程编号中选择课程编号、最高分数、最低分数。


查询每门课程的学生人数。


选择课程编号,将学生人数计算为SCORESGROUPBY课程编号中的学生人数。


查询男孩和女孩的数量。


3指定对结果进行分组的条件


GROUPBY的主要作用是进行分组聚合,有时也用于进行重复,类似于DISTINCT关键字。它还经常与HAVING关键字结合使用,以进一步过滤分组数据。


在SELECT查询中,HAVING子句必须位于GROUPBY子句之后、ORDERBY子句之前。带有HAVING子句的SELECT语句的语法为


SELECTcolumn1,column2--查询结果FROMtable1,table2--WHERE[条件]查找数据的表--查询条件GROUPBYcolumn1,column2--groupingHAVING[条件]--指定对结果进行分组的条件示例by性别分组,过滤统计人数大于1的学生。


选择性别,COUNT个姓名作为学生人数FROMStudentGROUPBYBYHAVINGCOUNTname>1;


面试题


查看平均分在60分以上的学生人数及平均分


选择学生ID、AVG分数作为平均分数FROMScoreGROUPBY学生IDHAVING平均分数>60;


查询至少修读两门课程的学生人数。


SELECT学生编号,按选修课数量COUNT科目编号FROMScoreGROUPBY学生编号HAVING选修课数量gt;=2;


查询同名学生列表,统计同名学生的数量。


SELECTname,COUNTname(学生人数)FROMStudentGROUPBYnameHAVING学生人数>=2;


4用SQL解决业务题


您过去已经学到了很多东西,但是您应该应用您所学到的知识并使用SQL来解决业务题吗?那么如何使用SQL来解决业务题呢?


将业务题翻译成易于理解的母语。


写下你的分析想法


编写相应的SQL子句


让我们看一个现实世界的例子,看看如何使用这个想法来解决题。


现在,假设您的老板要求您计算每个科目的平均分数。按照上面的步骤,先在草稿纸上写下题对应的分析思路,然后写下第一步要做什么,下一步要做什么。第二步.


上级要求关键词各科、平均成绩


在哪个表——>评分


每个科目——gt;每门课程——gt;


平均分——gt;


查询结果科目号、平均成绩


伟大的!接下来我们按照上面的分析思路,结合SQL子句的执行顺序,创建对应的SQL子句。


选择课程编号,AVG分数作为平均分FROMScoreGROUPBY课程编号;


接下来,你的老板会要求你进一步筛选出平均分在80分或更高的员工。


关键词筛选、平均分——gt;指定结果分组条件gt;=80,


选择课程号,AVG分数作为平均分FROMScoreGROUPBY课程号HAVING平均分>=80;


这很容易完成


面试题计算各科平均分,平均分在80分以上。按照我上面说的做就可以了。


5对查询结果进行排序


在处理数据时,经常需要对数据进行排序。SQL使用orderby语句来完成这个任务。


ORDERBY关键字用于对结果集进行排序。


ORDERBY与Excel中的排序类似,是将要排序的列按照升序ASC或降序DESC进行排序,然后显示数据。


默认情况下,ORDERBY关键字按ASC升序对记录进行排序。默认排序不需要您创建ASC。


DESC必须按降序书写,常与TOP关键字一起使用。


像往常一样,让我们从语法开始。


SELECT列1、列2、FROM表名ORDERBY列1、列2、ASC|DESC;此时SQL语句的执行顺序如下


5SELECTlt;selectlistgt;1FROM[left_table]3WHERElt;where_conditiongt;2GROUPBYlt;group_by_listgt;4HAVINGlt;having_conditiongt;6ORDERBYlt;order_by_listgt-orderby子句是查询结果,因此在select子句之后执行。栗子比如上面的题,如果找到每个科目的平均分,改成降序排序,就需要添加orderby语句。


选择课程编号,AVG分数作为平均分数FROMScoreGROUPBY课程编号ORDERBY平均分数DESC;


如何指定多个排序名称?


栗子按照年级升序和科目编号降序重新排列成绩单数据。


SELECTFROMScoreORDERBY分数ASC,课程号DESC/多排序列名,按照orderby子句中的列名从左到右排序,如果第一列值相同,则先排序第一列。然后按第二列中的值排序。


现在出现了一个新题。如果要排序的列包含空值,会发生什么情况?如何对空值进行排序?


我们来看看栗子树。


按教师表对教师姓名进行排序


请按教师姓名从订单中选择。


可以看到空值排在第一位,这意味着如果你想知道一列中有多少个空值,其实可以通过这样排序来找出。


你可能想知道为什么在上面列出的“老师姓名”一栏中,孟扎扎排在马化腾之前。如果不指定排序规则,则默认为“升序”排序。孟和马,a在e之前,所以马化腾应该在孟扎扎之前吧?


事实上,如果你的数据库的字符集编码是utf-8,汉字就不会按字母顺序排序。如果你的数据库的字符集编码是gbk,汉字就会按字母顺序排序。


这里有一个小技巧。如果你有几万、几十万条数据,此时只想返回一部分数据以提高效率,可以使用limit语句。


板栗


从分数2中选择;这仅返回表中的前两个数据。


由于Limit语句还处理查询结果,因此即使在select子句之后也会执行Limit子句!


面试题


查询未通过的课程,并按课程编号从大到小排序。


选择科目编号,F级

一、用sql语句查询男学生的学号、姓名?

选择列名、列名、列名fromtable_name。这里的列名称=“男性”。


二、sql查询年龄最大的男生信息语句?

选择最大年龄,来自性别='男性'的表


除非特别注明,本站所有文字均为原创文章,作者:admin

No Comment

留言

电子邮件地址不会被公开。 必填项已用*标注

感谢你的留言。。。