mysql窗口函数sum(mysql窗口函数执行顺序)

mysql窗口函数sum(mysql窗口函数执行顺序)Author Cyan RA9 一 统计函数 1 基本语法 SELECT COUNT COUNT column name FROM table name WHERE where definitition 注意事项 COUNT 表示查询整条记录 只要该记录满足 WHERE 子句的条件就会被统计在内

大家好,我是讯享网,很高兴认识大家。



Author : Cyan_RA9

一、统计函数

        1.基本语法 : 

        SELECT COUNT () / COUNT (column_name)…  FROM table_name                  [ WHERE where_definitition];         注意事项——         COUNT()表示查询整条记录,只要该记录满足WHERE子句的条件就会被统计在内;         COUNT(column_name)表示在符合WHERE子句条件的基础上,还必须满足指定列不为NULL。         可以在一条查询语句中使用多个COUNT(column_name),以同时统计多个列,分别显示各个列的统计结果。         若想特意查询某列为空的记录,可以配合IF语句来使用,             eg : SELECT COUNT(IF(ebonus IS NULL, 1, NULL)) FROM employee; 该查询语句的意思是如果某条记录的ebonus字段为NULL,就返回一个非空字符(这里的1可以是任意的非空字符),继而被COUNT函数统计在内;如果某条记录的ebonus字段非NULL,就返回NULL,继而不被COUNT函数统计在内。             PS : 亦可以使用两个COUNT函数进行相减的操作,即用统计所有结果的COUNT函数 - 统计非空的COUNT函数。eg : SELECT COUNT(*) - COUNT(ebonus) FROM employee ; [体现了SQL的灵活性!]         若希望COUNT函数的统计结果去重,可以在column_name前增加DISTINCT进行修饰,即COUNT( DISTINCT column_name)。

        2.代码演示 :  

                演示Ⅰ——

                现有学生表stus如下——

                现要求——                 ①统计表中一共有几位学生(即表中一共有多少条记录);                 ②统计数学成绩大于等于130的学生个数;                 代码如下 : 

                演示Ⅱ——

                向表中添加两条id = NULL的记录,stus表如下图所示 : 

                现要求——                 ①统计英语成绩在80分以下的学生个数;                 ②统计英语成绩在80分以下的,且id不等于NULL的学生个数;                 代码如下 : 

二、合计函数

        1.基本语法 : 

        SELECT SUM (column_name), SUM (column_name)… FROM table_name                 [ WHERE where_definition];         注意事项——         SUM函数仅对数值型字段起作用,否则无意义;         可以同时对多个列求和。

        2.代码演示 : 

                仍对stus表进行操作,stus表目前如下 : 

三、平均函数

        1.基本语法 : 

         SELECT AVG (column_name), AVG (column_name)… FROM table_name                 [ WHERE where_definition];         注意事项——         若求平均值的列中有NULL数据,AVG函数会自动跳过该NULL数据。         除了AVG函数,还可以使用SUM(column_name) / COUNT(column_name)的方式来统计某一字段的平均值。

        2.代码演示 : 

                仍对stus表进行操作,stus表目前如下 : 

                现要求——                  ①查询所有学生的数学成绩的平均分以及英语成绩的平均分;                 ②将id = 2的学生Ice的数学成绩置为空,再次查询全体学生的数学平均分;                 代码如下 : 

四、最值函数 


讯享网

        1.基本语法 : 

        SELECT MAX (columun_name)… / MIN (column_name)… FROM table_name                 [ WHERE where_definition];         注意事项——         与上面几个函数类似地,MAX和MIN函数也可以同时多个使用,并且可以混用。

        2.代码演示 : 

                仍然操作stus表,目前stus表如下 : 

                现要求——                 ①查询全体学生中最高的数学成绩和最低的数学成绩;                 ②查询全体学生中最高的英语成绩和最低的英语成绩;                 代码如下 : 

五、字符串函数

        1.常用字符串函数 : 

        CHARSET(str) : 返回字段(具体的字符串)的字符集类型;         CONCAT(string, string2…) : 连接多个字符串,将多个列拼接成一列;         INSTR(string, substring) : 返回substring在string中出现的位置,没有则返回0;         UCASE(string) : 将当前字符串转换成大写;         LCASE(string) : 将当前字符串转换成小写;         LEFT(string, length) : 从string的左边起取length个字符;(RIGHT可从右取)         LENGTH(string) : 获取当前string的长度(字节);         REPLACE(str, old_string, new_string) : 用new_string替换掉str中的old_string);         STRCMP(string1, string2) : 按照逐个字符比较两字符串大小;         10° SUBSTRING(str, position [, length]) : 从str的position开始(默认是1),取LENGTH个字符;         11° LTRIM(string) / RTRIM(string) / TRIM(string) : 去掉前端空格 / 后端空格 / 两端空格。

        2.代码演示 : 

                 CHARSET(str) : 返回字段的字符集类型;

                 CONCAT(string, string2…) : 连接多个字符串;

                 INSTR(string, substring) : 返回substring在string中出现的位置,没有则返回0; 

                 UCASE(string) : 将当前字符串转换成大写;

                 LCASE(string) : 将当前字符串转换成小写;

                 LEFT(string, length) : 从string的左边起取length个字符;

六、数学函数

        1.常用数学函数 : 

        ABS(num) :   求绝对值;         BIN(decimal_number) :   十进制转二进制;         CEILING(number) : 向上取整;         FLOOR(number) : 向下取整;         CONV(number, from_base, to_base) : 进制转换,将number以一个指定的进制转为另一个进制;         FORMAT(NUMBER, decimal_places) : decimal_places代表保留的小数位数(四舍五入);          HEX(DecimalNumber) : 转十六进制;          LEAST(number_1 [, number_2…number_n]) : 求最小值;         MOD(numerator, denominator) : 取余;         10° RAND([seed]) : 求0~1.0之间的随机数,若想要返回的随机数不变化,可以给出一个seed(种子)。

        2.代码演示 : 

七、日期函数

        1.常用日期函数 : 

        CURRENT_DATE :   当前日期;         CURRENT_TIME :  当前时间;         CURRENT_TIMESTAMP : 当前时间戳;         DATE(datetime) : 返回当前时间的日期部分;         //以下四个函数的date类型可以是DATE, DATETIME, TIMESTAMP类型         DATE_ADD(date, INTERVAL  d_value  d_type) : 在当前日期的基础上加上一段时间或日期;(d_type 可以是YEAR, MINUTE, SECOND, DAY等)          DATE_SUB(date, INTERVAL  d_value  d_type) : 在当前日期的基础上减去一段时间或日期;(d_type 可以是YEAR, MINUTE, SECOND, DAY等)          DATEDIFF(date1, date2) : 返回两个日期的时间差,结果是天;          TIMEDIFF(date1, date2) :  返回两个时间的时间差,结果是时间;         NOW() : 返回当前时间;         10° UNIX_TIMESTAMP() : 返回1970-1-1到现在的秒数。         11°  FROM_UNIXTIME() : 返回年月日。实际开发中,可能会使用int类型来保存一个时间戳,然后使用FROM_UNIXTIME()函数进行转换。

        2.代码演示 :  

                 CURRENT_DATE :  当前日期;                  CURRENT_TIME : 当前时间;                  CURRENT_TIMESTAMP : 当前时间戳;

                4° DATE(datetime) : 返回当前时间的日期部分;                  DATE_ADD(date, INTERVAL d_value d_type) : 在当前日期的基础上加上一段时间或日期;                  DATE_SUB(date, INTERVAL d_value d_type) : 在当前日期的基础上减去一段时间或日期;

                先来建一张新闻消息表,代码如下:

                 DATEDIFF(date1, date2) : 返回两个日期的时间差,结果是天;                 8° TIMEDIFF(date1, date2) : 返回两个时间的时间差,结果是时间;

八、加密函数

        1.基本语法 : 

        1° SELECT USER() FROM table_name;        ——查询当前登录到MySQL的用户及其IP;         2° SELECT DATABASE();         ——查询当前使用的数据库名称;         3° SELECT MD5(str);         ——根据当前字符串,通过MD5特定算法得到一个32位的密码,常用于对数据库用户密码的加密,并且数据库中保存的用户密码,往往就是MD5加密后的密码;         4° SELECT * FROM mysql.user; ——查询mysql数据库中的所有用户。

        2.代码演示 : 

                1° SELECT USER() FROM table_name;                   2° SELECT DATABASE();

                3° SELECT MD5(str);  

九、 流程控制函数

        1.基本语法 : 

        SELECT IF(expr_1, expr_2, expr_3) FROM table_name; ——若expr_1为TRUE则返回expr_2,否则返回expr_3)。(相当于java中的三目运算符)         SELECT IFNULL(expr_1, expr_2) FROM table_name; ——若expr_1为NULL,返回expr_2,否则返回expr_1)。         SELECT CASE WHEN expr_1 THEN expr_2                                       WHEN expr_3 THEN expr_4…                                       WHEN expr_n-1 THEN expr_n                                       ELSE expr_e END ; ——若expr_1成立,则返回expr_2;若expr_3成立,则返回expr_4,依此类推;若所有条件都不成立,返回ELSE中的内容。(相当于java中自带break语句的case分支语句)。

        2.代码演示 : 

                 SELECT IF(expr_1, expr_2, expr_3) FROM table_name;                 2° SELECT IFNULL(expr_1, expr_2) FROM table_name; 

                 SELECT CASE WHEN expr_1 THEN expr_2

                                      WHEN expr_3 THEN expr_4…

                                      WHEN expr_n-1 THEN expr_n

                                      ELSE expr_e END;

                stus表如下 : 

        System.out.println("END—————————————————————————–");

小讯
上一篇 2025-05-16 13:58
下一篇 2025-05-14 08:25

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/163894.html