文章导航PC6首页软件下载单机游戏安卓资源苹果资源

pc软件新闻网络操作系统办公工具编程服务器软件评测

安卓新闻资讯应用教程刷机教程安卓游戏攻略tv资讯深度阅读综合安卓评测

苹果ios资讯苹果手机越狱备份教程美化教程ios软件教程mac教程

单机游戏角色扮演即时战略动作射击棋牌游戏体育竞技模拟经营其它游戏游戏工具

网游cf活动dnf活动lol周免英雄lol礼包

手游最新动态手游评测手游活动新游预告手游问答

您的位置:首页技术开发数据库技巧 → SELECT查询的应用(三)

SELECT查询的应用(三)

时间:2004/12/2 0:57:00来源:本站整理作者:蓝点我要评论(0)

分类汇总

  结构化查询(SQL)的另一个强大的功能是分类汇总,也就是GROUP子句;MySQL当然也提供这个功能。现在还以我在《SELECT查询的应用(二)JOIN子句的用法》中的数据库为例说说GROUP子句的用法。



  一、查询每个客户的交易次数。COUNT()是一个与GROUP子句一起使用的函数,它的作用是计数:



SELECT customer,COUNT(*) AS sale_count FROM sales GROUP BY customer



返回的查询可能结果为:



+----------+------------+

| customer | sale_count |

+----------+------------+

|    1 |     1 |

+----------+------------+

|    2 |     1 |

+----------+------------+



表示了代码为1和2的两个客户分别有一次交易。



  二、查询每个客户的交易总额。SUM()是一个与GROUP子句一起使用的函数,它的作用是求和:



SELECT customer,SUM(price*amount) AS total_price FROM sales GROUP BY customer



返回的查询结果可能为:



+----------+-------------+

| customer | total_price |

+----------+-------------+

|    1 |  12000.00 |

+----------+-------------+

|    2 |  12000.00 |

+----------+-------------+



表示了代码为1和2的两个客户各有12000元的交易额。其中SUM(price*amount)表示先将price和amount即单价和数量相乘后再求和,亦即总价。



  三、查询每个客户的平均每次交易额。AVG()是求平均值的函数:



SELECT customer,AVG(price*amount) AS avg_price FROM sales GROUP BY customer



返回的查询结果可能为:



+----------+-----------+

| customer | avg_price |

+----------+-----------+

|    1 | 12000.00 |

+----------+-----------+

|    2 | 12000.00 |

+----------+-----------+



表示了代码为1和2的两个客户的平均每次交易的交易额都是12000元。由于我预设的数据量比较小,查询的结果不甚明显,请读者谅解。可以随意向sales表中添加一些数据,数据量越大,结果越明显。



  四、查询每个客户最大的和最小的一笔成交额。MAX()和MIN()函数分别是取最大值和最小值的函数:



SELECT customer,MAX(price*amount) AS max_price,MIN(price*amount) AS min_price FROM sales GROUP BY customer



返回的查询结果可能为:



+----------+-----------+-----------+

| customer | max_price | min_price |

+----------+-----------+-----------+

|    1 | 12000.00 | 12000.00 |

+----------+-----------+-----------+

|    2 | 12000.00 | 12000.00 |

+----------+-----------+-----------+

  

  五、查询每一种货物售出的平均价格。



SELECT good_code,avg(price) AS avg_price FROM sales GROUP BY good_code



对么?不对!这样查询到的是每种货物各条销售记录中价格的平均值,并不是实际售出的所有该货物的平均价格;对我们来说,有用的是按照销售数量加权平均的价格:



SELECT good_code,sum(price*amount)/sum(amount) AS avg_price FROM sales GROUP BY good_code



返回的查询结果可能为:



+-----------+-----------+

| good_code | avg_price |

+-----------+-----------+

|   A0001 |  1200.00 |

+-----------+-----------+



  六、查询售给不同客户的每一种货物售出的平均价格。只要在GROUP子句中多加一个关键字:



SELECT good_code,customer,sum(price*amount)/sum(amount) AS avg_price FROM sales GROUP BY good_code,customer



返回的查询结果可能为:



+-----------+----------+-----------+

| good_code | customer | avg_price |

+-----------+----------+-----------+

|   A0001 |    1 |  1200.00 |

+-----------+----------+-----------+

|   A0001 |    2 |  1200.00 |

+-----------+----------+-----------+



所有客户和所售货物两项相同的记录汇总到一起来求平均,就形成了售给不同客户的每一种货物售出的平均价格。




相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 没有查询到任何记录。

最新文章 mssql企业管理器不能打 Oracle PRKC-1002错误原因和解决方案SQL SERVER数据库日志清空图文教程win2003计算机改名后sql server 2005 本地复DB2错误信息码大全

人气排行 彻底解决mysql中文乱码的办法mysql数据库root密码忘记的修改方法SQL SERVER数据库日志清空图文教程.bak备份文件如何恢复Oracle PRKC-1002错误原因和解决方案Oracle错误代码大全如何将txt的文本数据导入SQL server 2005呢DB2错误信息码大全