设为首页
加入收藏
联系我们
首页 基础教程 技术文档 实例分析 数 据 库 疑难杂症 ASP.NET 七夕许愿树 技术论坛
最新文章
  .NET上传图片加文字…
 在vs.net bate…
 C#中利用正则表达式实现…
 Visual C#的SQ…
 关于使用存储过程创建分页
 通用分页显示查询存储过程
 大数据量的分页
 什么是web.confi…
 ASP.NET 配置文件…
 对“三层结构”的深入理解…
 多个关键字的查询问题
 VB和C# 语法对比图 …
 C#基础全接触
 用C#压缩和修复Acce…
 C#中的类型相等与恒等(…
推荐文章
 关于C#中的REF和黓认…
 读书笔记c#高级编程 委…
 【算法】C#快速排序类
 Visual C#的SQ…
 C#中调用API
 Infragistics…
 C#接口转换
 C#读取设备信息
 用.net操作word
 C# MessageBo…
 Visual C#中的数…
 雅虎公司C#笔试题,看看…
 C#.NET使用NHib…
 .net学习之运算符重载…
 Visual C# 3.…
热门文章
 ADO.Net与ADO在…
 开发ASP.NET下的M…
 用C#+XMI技术进行U…
 什么是虚拟机?
 C#基础全接触
 C#中利用正则表达式实现…
 雅虎公司C#笔试题,看看…
 用Visual C# 2…
 C#学习第一天
 C#语言初级入门(1)
 VB和C# 语法对比图 …
 远程重启计算机(C#)
 什么是B/S三层?
 Visual C#的SQ…
 Visual C#常用函…
SELECT查询的应用
阅读正文 文字大小:增大 减小  文字行距:增大 减小   双击自动滚屏
本文由中国C#技术学习中心整理  如果你对本文有不明之处请到技术论坛讨论!

分类汇总
结构化查询(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 |
+-----------+----------+-----------+

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



本文由中国C#技术学习中心整理  如果你对本文有不明之处请到技术论坛讨论!

中国C#技术交流QQ群:6337034  10976424  9383681  35248582  35248645
版权所有:中国C#技术学习中心 Copyright © 20010-20012
建议浏览分辨率使用:1024*768分辨率
粤ICP备05002251号