[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;

 

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/haibaowang/p/7132146.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值