冷月葬花魂 发表于 2015-1-16 22:39:30

MSSQL编程:分组统计办法:用Group By

线上或者测试环境经常出现的误操作总是让DBA同学那么闹心。分组|统计
原贴:http://community.csdn.net/Expert/topic/3739/3739565.xml?temp=.7632105
表中三个字段
|---------------------------------------------|
|产物数目单价|
|=============================================|
|A320|
|A425|
|A230|
|B685|
|B396|
|---------------------------------------------|

如今想失掉以下了局:
产物均匀价
A******
B******
注重:一种商品一个均匀价

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

求该SQL语句。

createtable表(产物varchar(5),数目int,单价decimal(4,2))
insert表selectA,3,20
unionallselectA,4,25
unionallselectA,2,30
unionallselectB,6,85
unionallselectB,3,96

select产物,cast(sum(isnull(单价,0)*isnull(数目,0))/sum(数目)asdecimal(4,2))as均匀值from表groupby产物

droptable表

--了局:

(所影响的行数为5行)

产物均匀值
-----------
A24.44
B88.67

(所影响的行数为2行)

提供用于管理、检查、优化数据库操作的管理工具。

变相怪杰 发表于 2015-1-19 20:46:15

微软对CLR作了大篇幅的宣传,这是因为数据库产品终于融入.net体系中。最开始我们也是狂喜,感觉对象数据库的一些概念可以实现了。

分手快乐 发表于 2015-1-27 06:22:37

这一点很好的加强了profiler的功能。但是提到profiler提醒大家注意一点。windows2003要安装sp1补丁才能启动profiler。否则点击没有反应。

小妖女 发表于 2015-2-5 02:46:28

可以动态传入参数,省却了动态SQL的拼写。

海妖 发表于 2015-2-11 03:04:07

多加的系统视图和实时系统信息这些东西对DBA挑优非常有帮助,但是感觉粒度还是不太细。

admin 发表于 2015-3-1 20:15:35

对一张百万级别的表建游标,同时又没有什么过滤条件,取得游标效率是如果直接SQL查询百万条数据;如果再对每条记录做处理,耗时将更长。

不帅 发表于 2015-3-10 23:11:17

在select语句中可以使用groupby子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息,另外,可以使用having子句限制返回的结果集。

蒙在股里 发表于 2015-3-17 15:54:38

而写到本地,我又考虑到效率问题.大家来讨论讨论吧,分数不打紧,就给10分,十全十美,没啥对错,各抒己见,但是要有说服力的哦~

小女巫 发表于 2015-3-24 10:22:13

如果处理少量数据,比如几百条记录的数据,我不知道这两种情况哪个效率更高,如果处理大量数据呢?比如有表中有20万条记录.
页: [1]
查看完整版本: MSSQL编程:分组统计办法:用Group By