• [SQL提数]函数的灵活使用


    1.Group by+having+sum(p+m+n)

    sum:求和函数,实际应用中如果想要查询一个表中两个字段的和,应用时只要加上括号,里面将两个字段相加即可。

    例如表repayment_tab(还款表)结构如下:

    此时我们想要查询本金利息的总和,SQL语句如下:
    select sum(a.balance+a.inte) from repayment_tab a;即:Mysql的函数中可以进行加、减、乘、除四则运算,且可以加括号,提高执行优先级;

    例如如下写法:

    select sum(a.payment_month_sum),sum(a.payment_sum),sum(a.loan_balance),sum(a.payment_month_sum+a.payment_sum-a.loan_balance) from repayment_tab_a a;

    2.group by用法主要用于分组,要结合count(1)进行使用;

    扩展:查询一个表的列数时,如果查询多个字段,一般采用count(1)而不使用count(*),原因在于count(1)的查询效率远远大于count(*);

    将上述查询本金+利息之和的语句进行扩展,按照不同的期数进行分组;

    此时SQL语句变为:

    select sum(a.balance+a.inte),count(1) count_a from repayment_tab a group by a.term;

    注意如下:

    1)group by后面的分组条件可以是一个字段,也可以是多个关联在一起的字段;

    2)count_a是count的别名,这个写法也可以写成:count(1) as count_a,其中我们的写法是神略as的;

    3)因为聚合函数通过作用于一组数据而只返回一个单个值,因此,在SELECT语句中出现的元素要么为一个聚合函数的输入值,要么为GROUP BY语句的参数,否则会出错。 

    3.having条件的使用:

    1)只能作用于聚合函数

    2)一般用于group by语句后进行书写作为分组的条件;例如扩展语句中想要查询出按照本金分组且大于2000的分组数据,SQL语句书写如下:

    select sum(a.balance+a.inte).sum(a.balance)  from repayment_tab a group by a.term having a.balance>2000;

     

  • 相关阅读:
    文档注释
    配置环境变量
    Java编译-->运行
    DOS命令(日后补充)
    字符、字符串函数
    输入字符串,逆序输出
    求矩阵最大元素值,以及行号和列号
    Apache和Tomcat的区别
    C# params关键字
    JSP的隐式对象(session)
  • 原文地址:https://www.cnblogs.com/haibaowang/p/7132146.html
Copyright © 2020-2023  润新知