LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

SQL分类汇总 实例

admin
2010年7月3日 16:5 本文热度 6267
[p] 结构化查询(sql)的另一个强大的功能是分类汇总,也就是group子句;mysql当然也提供这个功能。现在还以我在《select查询的应用(二)join子句的用法》中的数据库为例说说group子句的用法。 [br][br]  一、查询每个客户的交易次数。count()是一个与group子句一起使用的函数,它的作用是计数: [br][br]select customer,count(*) as sale_count from sales group by customer [br][br]返回的查询可能结果为: [br][br]+----------+------------+ [br]| customer | sale_count | [br]+----------+------------+ [br]| 1 | 1 | [br]+----------+------------+ [br]| 2 | 1 | [br]+----------+------------+ [br][br]表示了代码为1和2的两个客户分别有一次交易。 [br][br]  二、查询每个客户的交易总额。sum()是一个与group子句一起使用的函数,它的作用是求和: [br][br]select customer,sum(price*amount) as total_price from sales group by customer [br][br]返回的查询结果可能为: [br][br]+----------+-------------+ [br]| customer | total_price | [br]+----------+-------------+ [br]| 1 | 12000.00 | [br]+----------+-------------+ [br]| 2 | 12000.00 | [br]+----------+-------------+ [br][br]表示了代码为1和2的两个客户各有12000元的交易额。其中sum(price*amount)表示先将price和amount即单价和数量相乘后再求和,亦即总价。 [br][br]  三、查询每个客户的平均每次交易额。avg()是求平均值的函数: [br][br]select customer,avg(price*amount) as avg_price from sales group by customer [br][br]返回的查询结果可能为: [br][br]+----------+-----------+ [br]| customer | avg_price | [br]+----------+-----------+ [br]| 1 | 12000.00 | [br]+----------+-----------+ [br]| 2 | 12000.00 | [br]+----------+-----------+ [br][br]表示了代码为1和2的两个客户的平均每次交易的交易额都是12000元。由于我预设的数据量比较小,查询的结果不甚明显,请读者谅解。可以随意向sales表中添加一些数据,数据量越大,结果越明显。 [br][br]  四、查询每个客户最大的和最小的一笔成交额。max()和min()函数分别是取最大值和最小值的函数: [br][br]select customer,max(price*amount) as max_price,min(price*amount) as min_price from sales group by customer [br][br]返回的查询结果可能为: [br][br]+----------+-----------+-----------+ [br]| customer | max_price | min_price | [br]+----------+-----------+-----------+ [br]| 1 | 12000.00 | 12000.00 | [br]+----------+-----------+-----------+ [br]| 2 | 12000.00 | 12000.00 | [br]+----------+-----------+-----------+ [br]   [br]  五、查询每一种货物售出的平均价格。 [br][br]select good_code,avg(price) as avg_price from sales group by good_code [br][br]对么?不对!这样查询到的是每种货物各条销售记录中价格的平均值,并不是实际售出的所有该货物的平均价格;对我们来说,有用的是按照销售数量加权平均的价格: [br][br]select good_code,sum(price*amount)/sum(amount) as avg_price from sales group by good_code [br][br]返回的查询结果可能为: [br][br]+-----------+-----------+ [br]| good_code | avg_price | [br]+-----------+-----------+ [br]| a0001 | 1200.00 | [br]+-----------+-----------+ [br][br]  六、查询售给不同客户的每一种货物售出的平均价格。只要在group子句中多加一个关键字: [br][br]select good_code,customer,sum(price*amount)/sum(amount) as avg_price from sales group by good_code,customer [br][br]返回的查询结果可能为: [br][br]+-----------+----------+-----------+ [br]| good_code | customer | avg_price | [br]+-----------+----------+-----------+ [br]| a0001 | 1 | 1200.00 | [br]+-----------+----------+-----------+ [br]| a0001 | 2 | 1200.00 | [br]+-----------+----------+-----------+ [br][br]所有客户和所售货物两项相同的记录汇总到一起来求平均,就形成了售给不同客户的每一种货物售出的平均价格。[/p]
[p]按月统计:[color=#0000ff]select[/color][color=#000000] [/color][color=#ff00ff]convert[/color][color=#000000]([/color][color=#0000ff]char[/color][color=#000000]([/color][color=#800000][b]7[/b][/color][color=#000000]),createtime,[/color][color=#800000][b]20[/b][/color][color=#000000]) [/color][color=#0000ff]as[/color][color=#000000] time,[/color][color=#ff00ff]sum[/color][color=#000000](price*amount) [/color][color=#0000ff]as[/color][color=#000000] hits [/color][color=#0000ff]from[/color][color=#000000] sales [br][/color][color=#0000ff]group[/color][color=#000000] [/color][color=#0000ff]by[/color][color=#000000] [/color][color=#ff00ff]convert[/color][color=#000000]([/color][color=#0000ff]char[/color][color=#000000]([/color][color=#800000][b]7[/b][/color][color=#000000]),createtime,[/color][color=#800000][b]20[/b][/color][color=#000000])[/color][/p]

该文章在 2010/7/3 16:05:50 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved