7.01 计算平均值

问题:计算某个列的平均值,它可以包含表中的所有行,也可以只包含其中的某个子集。例如,计算所有职员的平均工资以及每个部门的平均工资。

解决方法:当计算所有职员的平均工资时,只需要把AVG函数应用于工资列即可。
select avg(sal) as avg_sal from emp group by deptno;

要计算每个部门的平均工资,需使用GROUP BY子句,它按每个部门创建分组:
select deptno,avg(sal) as avg_sal from emp group by deptno;

讨论:
如果以整个表作为一个组或一个窗口计算平均值,则只需对相应列使用AVG函数,而不要使用GROUP BY子句。请注意,AVG函数会忽略NULL值。

create table t2(sal integer);
insert into t2 values(10);
insert into t2 values(20);
insert into t2 values(null);

select distinct 30/2 from t2;
+---------+
| 30/2    |
+---------+
| 15.0000 |
+---------+

select avg(coalesce(sal,0)) from t2;
+----------------------+
| avg(coalesce(sal,0)) |
+----------------------+
|              10.0000 |
+----------------------+

COALESCE函数会返回参数列表中的第一个非NULL值。如果把SAL值中的NULL转换为0,平均值就会改变。
顺便提一下,GROUP BY依据的列不一定要包含在SELECT列表中,例如:
select avg(sal) from emp group by deptno;
+--------------------+
| avg(sal)           |
+--------------------+
| 2916.6666666666665 |
| 1566.6666666666667 |
+--------------------+

即使在SELECT子句中不包含DEPTNO,也可以按它分组。

时间: 2024-10-07 14:43:42

7.01 计算平均值的相关文章

matlab 利用while循环计算平均值和方差

一.该程序是用来测输入数据的平均值和方差的 公式: 二. 项目流程: 1. State the problem假定所有测量数为正数或者0,计算这一系列测量数的平均值和方差.假定我们预先不知道有多少测量数据被录入,一个负数标志着测量数据输入结束 2. Define the inputs and outputs程序要求输入的数是未知的正数或者0,程序输出的数是输入数据集的平均值和方差.除此之外,我们将打印出输入的数据数,因为它对于我们检查输入数据是有用的 3.Define the algorithm

初学Java3:数组-从键盘录入若干学生的成绩,计算平均值,最大值,最小值

//任务:从键盘录入若干学生的成绩,计算平均值,最大值,最小值package com.azhi;//纠正昨天的包名,今天老师说要以反域名命名,昨天还不知道,今天就这么弄了一个import java.util.Scanner;public class Text_Array { public static void main(String[] args){ Scanner sc=new Scanner(System.in);//从键盘输入 System.out.print("请输入学生个数:&quo

7.1 计算平均值

问题:计算某个列的平均值,它可以包含表中的所有行,也可以只包含其中的某个子集.例如,计算所有职员的平均工资以及每个部门的平均工资. 解决方法:当计算所有职员的平均工资时,只需要把AVG函数应用于工资列即可.select avg(sal) as avg_sal from emp group by deptno; 要计算每个部门的平均工资,需使用GROUP BY子句,它按每个部门创建分组:select deptno,avg(sal) as avg_sal from emp group by dept

为什么在 Java 中用 (low+high)>>>1 代替 (low+high)/2 或 (low+high)>>1 来计算平均值呢?好在哪里?

>>>与>>是位运算符,只对整型有效(不能用于浮点型).当是整型的时候(low+high)>>1可以代替(low+high)/2.>>>是无符号右移运算符.如果 low+high是正整数,这三种运算是等价的. 由于有编译器优化,他们的效率应该是相同的(如果不存在编译器优化,移位运算更快).用>>>一般是有特殊的目的 至于>>>和>>的区别,则在于有符号和无符号.比如-2>>>1的结

spark计算平均值

对于 Array(('a',1), ('a',2), ('b',3), ('a',4), ('a',15))如何计算平均值呢: 原来通过计算两边,第一遍计算总次数 val a = sc.parallelize(data).map(x=>1)val b = sc.parallelize(data).map(x=>x._2)val count = a.reduce(_+_)val value = b.reduce(_+_)print(value/count)但是这样需要对数据做两次处理,效率大大的

matlab 利用while循环计算平均值和方差(第二版)

第一版中因为公式中含有:分母项:n(n-1),而程序并没有对输入数进行判定,如果仅仅输入一个或者一个都不输入,将会出现除0的情况 基于此,进行第二版改进. 代码: % 脚本文件:states.m % % 目标: % 该程序首先累计输入未知的数(正数或者0),然后计算这个数据集的平均值和方差 % % 版本记录 % 日期 编者 描述 % ===== ========= ================ % 2015-10-4 21:21 泡泡 源码 % 2015-10-4 21:56 泡泡 纠正除0

hadoop streaming anaconda python 计算平均值

原始Liunx 的python版本不带numpy ,安装了anaconda 之后,使用hadoop streaming 时无法调用anaconda python  , 后来发现是参数没设置好... 进入正题: 环境: 4台服务器:master slave1  slave2  slave3. 全部安装anaconda2与anaconda3, 主环境py2 .anaconda2与anaconda3共存见:Ubuntu16.04 Liunx下同时安装Anaconda2与Anaconda3 安装目录:/

01.计算属性 & Methods

<div id="example">   <p>Original message: "{{ message }}"</p>   <p>Computed reversed message: "{{ reversedMessage }}"</p> </div> <script> var vm = new Vue({   el: '#example',   data:

es6 reduce计算平均值

原文地址:https://www.cnblogs.com/malong1992/p/12128688.html