分组统计方法:用Group By

分组|统计

原贴:http://community.csdn.net/Expert/topic/3739/3739565.xml?temp=.7632105
表中三个字段
|---------------------------------------------|
|  产品             数量                单价  |
|=============================================|
|  A                3                    20   |
|  A                4                    25   |
|  A                2                    30   |
|  B                6                    85   |
|  B                3                    96   |
|---------------------------------------------|

现在想得到以下结果:
    产品   平均价
     A       ******
     B       ******
注意:一种商品一个平均价

平均数算法:
A的平均价数= (3 * 20)+ (4 * 25)+ (2 * 30)/(3+4+2),B的平均值也如A。

求该SQL语句。

create table 表(产品  varchar(5),数量  int,单价 decimal(4,2))
insert 表 select 'A',3,20
union all select 'A',4,25
union all select 'A',2,30
union all select 'B',6,85
union all select 'B',3,96

select 产品,cast(sum(isnull(单价,0)*isnull(数量,0))/sum(数量) as decimal(4,2)) as '平均值' from 表 group by 产品

drop table 表

--结果:

(所影响的行数为 5 行)

产品    平均值   
----- ------
A     24.44
B     88.67

(所影响的行数为 2 行)

时间: 2024-10-26 03:26:26

分组统计方法:用Group By的相关文章

MYSQL每隔10分钟进行分组统计的实现方法_Mysql

前言 本文的内容主要是介绍了MYSQL每隔10分钟进行分组统计的实现方法,在画用户登录.操作情况在一天内的分布图时会非常有用,之前我只知道用「存储过程」实现的方法(虽然执行速度快,但真的是太不灵活了),后来学会了用高级点的「group by」方法来灵活实现类似功能. 正文: -- time_str '2016-11-20 04:31:11' -- date_str 20161120 select concat(left(date_format(time_str, '%y-%m-%d %h:%i'

Sql Server:多行合并成一行,并做分组统计的两个方法

复制代码 代码如下: --创建 test 表 ,插入数据 CREATE TABLE test(code varchar(50), [values] varchar(10),[count] int) INSERT test SELECT '001', 'aa',1 UNION ALL SELECT '001', 'bb',2 UNION ALL SELECT '002', 'aaa',4 UNION ALL SELECT '002', 'bbb',5 UNION ALL SELECT '002',

Lucene5学习之Group分组统计

 Group即分组,类似SQL里的group by功能,Lucene中分组是通过内置的几种Collector结果集收集器实现的,有关group的结果集收集器都在org.apache.lucene.search.grouping包及其子包下,  包含group关键字的Collector都是有关Group分组的结果收集器,如果你只需要统计如下这些分组信息: Java代码   /** 所有组的数量 */   int totalGroupCount = 0;   /** 所有满足条件的记录数 */  

mysql group by 先排序与分组同时使用方法

本教程今天要讲述一下关于,困扰使用mysql教程数据库教程的朋友的一个常见的问题,mysql group by 先排序与分组同时使用方法,下面看实例. 看排序 select * from (select * from posts order by dateline desc) group by  tid order by dateline desc limit 10 这样效率应该高点.取消了order   by   的filesort过程. select   *   from   t   whe

sql server如何利用开窗函数over()进行分组统计_MsSql

这是一道常见的面试题,在实际项目中经常会用到. 需求:求出以产品类别为分组,各个分组里价格最高的产品信息. 实现过程如下: declare @t table( ProductID int, ProductName varchar(20), ProductType varchar(20), Price int) --测试数据 insert @t select 1,'name1','P1',3 union all select 2,'name2','P1',5 union all select 3,

sql server如何利用开窗函数over()进行分组统计

这是一道常见的面试题,在实际项目中经常会用到. 需求:求出以产品类别为分组,各个分组里价格最高的产品信息. 实现过程如下: declare @t table( ProductID int, ProductName varchar(20), ProductType varchar(20), Price int) --测试数据 insert @t select 1,'name1','P1',3 union all select 2,'name2','P1',5 union all select 3,

模拟多级表头的分组统计

分组|统计 原帖地址:http://community.csdn.net/Expert/topic/3434/3434688.xml?temp=3.246486E-03 --测试数据create table 单位表 (单位代码 varchar(10),单位名称 varchar(50))insert 单位表 values('01'      ,'中国单位')             --1级insert 单位表 values('0101'    ,'山东单位')             --2级i

实现按部门月卡余额总额分组统计的SQL查询代码

分组|统计 陈优章的专栏 (原创,到现在为至最为复杂的SQL查询代码)实现按部门月卡余额总额分组统计的SQL查询代码(在Ms SQL Server中调试通过) SELECT dp.dpname1 AS 部门, cust_dp_SumOddfre.sum_oddfare AS 当月卡总余额FROM (SELECT T_Department.DpCode1, SUM(custid_SumOddfare_group.sum_oddfare)               AS sum_oddfare  

Access中分组统计的实例

access|分组|统计 Access中分组统计的实例 整理自:http://expert.csdn.net/Expert/topic/2727/2727523.xml?temp=.1140711 online 表下有字段: 描述:用户名 版本 是否注册 字段:usr_name ver isreg 现表中有以下记录: aaa cn true bbb cn false ccc en true ddd fr true 结果要求:查询每个版本的注册用户和未注册用户的数目,得出如下结构: 版本 注册数量