zoukankan      html  css  js  c++  java
  • [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;

     

  • 相关阅读:
    Nginx internal 指令限制访问图片资源文件
    Laravel 5 中文文档 CHM 版
    Educational Codeforces Round 89 (Rated for Div. 2)
    Markdown写的第一篇文章,猜猜里边有什么东西吧!
    Git暂存流程
    Java BIO、NIO与AIO的介绍(学习过程)
    如何在Mac中安装telnet
    使用IDEA编译java程序时,出现的编译错误: error:java:错误:不支持发行版本5
    Java中请优先使用try-with-resources而非try-finally
    Redis入门学习(学习过程记录)
  • 原文地址:https://www.cnblogs.com/haibaowang/p/7132146.html
Copyright © 2011-2022 走看看