mysql sql总计函数_请问select SQL 语言中常用的合计函数有哪些?

9d7a6bcc0a35960f94e65490e67e02de.png

慕前端131612

1、sql中sum和count的区别 ----sql聚合函数(1)首先,sum是对一个字段求和,hive中字段的类型一般是string或者是int,如果是int当然没有问题,如果是string类型但是全部是数字也没有问题,但是如果string类型中包含一个字母,sum的结果将会是0例如如下的表:user_id string shop_id string1234 hello1234 1234那么sum(user_id)的结果就是2468,sum(shop_id)的结果就是0.如果没有符合的条件的记录,sum的返回值就是Null,如:sum(case when user_id<1000 then shop_id end) 返回值就是Null但是有些时候我们希望sum的结果如果没有符合的记录就返回0,可以用coalesce(shop_id, 0)解决这个问题。(2)count是对数据记录的条数进行统计,有一条符合的记录就是1,没有就是0.2、 case when then end用法示例: -----sql流程控制函数case valuewhen compare-value then resultwhen compare-value then result……else resultend例如:select case when 1>0 then 'yes' else 'no' end;+----------------------------------------+| case when 1>0 then 'yes' else 'no' end |+----------------------------------------+| yes |+----------------------------------------+3、row_number( ) over用法: -------sql分析函数row_number() OVER ( PARTITION BY COL1 ORDER BY COL2)表示根据COL1分组,在分组内部根据 COL2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的).4、if()函数 ----------sql流程控制函数(1) if(expr1, expr2, expr3)如果expr1返回真, 则该表达式返回expr2,否则返回expr3e.g. mysql> select if(strcmp('test','test'),'no','yes');+--------------------------------------+| if(strcmp('test','test1'),'no','yes') |+--------------------------------------+| yes |+--------------------------------------+说明:strcmp(expr1, expr2)这个函数在expr1小于expr2时,返回-1,相等时返回0,其余情况返回1.在上面的例子中,strcmp返回-1,所以上例输出返回yes(2) ifnull(expr1, expr2)该函数在expr1为NULL时,返回expr2,否则,返回expr1.(3) nullif(expr1, expr2)如果expr1=expr2,则返回NULL,否则,返回expr15、max()函数 和min()函数 ------sql聚合函数语法:MIN(e1)、MAX(e1)参数:e1为一个字符型、日期型或数值类型的表达式。若e1为字符型,则根据ASCII码来判断最大值与最小值。返回:根据e1参数的类型,返回对应类型的数据。作用:MIN(e1)返回e1表达式指定的列中最小值;MAX(e1)返回e1表达式指定的列中最大值;说明:max函数可以使用于numeric、char、varchar、money、smallmoney、或datetime列,但不能用于bit列。不允许使用聚合函数和子查询。e.g.查询TEACHER表中教师的最大年龄。实例代码:SELECT MAX (AGE) AS MAXAGEFROM TEACHER运行结果如下图所示:图1TEACHER表中教师的最大年龄然而,在实际应用中得到这个结果并不是特别有用,因为经常想要获得的信息是具有最大年龄的教师的教工号、姓名、性别等信息。然而SQL不支持如下的SELECT语句:SELECT TNAME, DNAME, TSEX, MAX (AGE)FROM TEACHER因为聚合函数处理的是数据组,在本例中,MAX函数将整个TEACHER表看成一组,而TNAME、DNAME和TSEX的数据都没有进行任何分组,因此SELECT语句没有逻辑意义。同样的道理,下面的代码也是无效的:SELECT TNAME, DNAME, TSEX,SAL ,AGEFROM TEACHER WHERE AGE=MAX (AGE)解决这个问题的方法,就是在WHERE子句中使用子查询来返回最大值,然后再基于这个返回的最大值,查询相关信息。下例在WHERE子句中使用子查询返回最大值:查询TEACHER表中年纪最大的教师的教工号、姓名、性别等信息。实例代码:SELECT TNAME, DNAME, TSEX, SAL, AGEFROM TEACHERWHERE AGE=(SELECT MAX (AGE) FROM TEACHER)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
列举了SQL语句大部分常用函数 Abs(number) 取得数值的绝对值。 Asc(String) 取得字符串表达式的第一个字符ASCII 码。 Atn(number) 取得一个角度的反正切值。 CallByName (object, procname, usecalltype,[args()]) 执行一个对象的方法、设定或传回对象的属性。 CBool(expression) 转换表达式为Boolean 型态。 CByte(expression) 转换表达式为Byte 型态。 CChar(expression) 转换表达式为字符型态。 CDate(expression) 转换表达式为Date 型态。 CDbl(expression) 转换表达式为Double 型态。 CDec(expression) 转换表达式为Decimal 型态。 CInt(expression) 转换表达式为Integer 型态。 CLng(expression) 转换表达式为Long 型态。 CObj(expression) 转换表达式为Object 型态。 CShort(expression) 转换表达式为Short 型态。 CSng(expression) 转换表达式为Single 型态。 CStr(expression) 转换表达式为String 型态。 Choose (index, choice-1[, choice-2, ... [, choice-n]]) 以索引值来选择并传回所设定的参数。 Chr(charcode) 以ASCII 码来取得字符内容。 Close(filenumberlist) 结束使用Open 开启的档案。 Cos(number) 取得一个角度的余弦值。 Ctype(expression, typename) 转换表达式的型态。 DateAdd(dateinterval, number, datetime) 对日期或时间作加减。 DateDiff(dateinterval, date1, date2) 计算两个日期或时间间的差值。 DatePart (dateinterval, date) 依接收的日期或时间参数传回年、月、日或时间。 DateSerial(year, month, day) 将接收的参数合并为一个只有日期的Date 型态的数据。 DateValue(datetime) 取得符合国别设定样式的日期值,并包含时间。 Day(datetime) 依接收的日期参数传回日 ....

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值