该例以学生信息表为例,将学生信息按年级和性别分组,统计各年级男生和女生的人数、总成绩和平均成绩,并将查询结果按平均成绩降序排列。下图是原数据表staq:

【C#实现过程】
 (1)创建一个名为StudentGroup的窗体应用程序,为窗体添加一个DataGridView控件(命名为dGVStudent)。
 (2)重写窗体OnLoad事件函数,添加查询代码如下: 
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace StudentGroup
{public partial class Form1 : Form{public Form1(){InitializeComponent();}protected override void OnLoad(EventArgs e){//创建数据库连接SqlDataAdapter adapter = new SqlDataAdapter(@"SELECT grade AS 年级,sexy AS 性别,COUNT(*) AS 人数,SUM(result) AS 总成绩,AVG(result) AS 平均成绩 FROM staq_info GROUP BY grade,sexy ORDER BY 5 DESC","Data Source=.\\SQLExpress;Database=aq;Trusted_Connection=true;");DataSet dataSet = new DataSet();                       //创建数据集adapter.Fill(dataSet);                                 //用查询结果填充数据集dGVStudent.DataSource = dataSet.Tables[0];             //将数据集绑定到控件}}
}
本实例代码主要通过SQL语句实现对数据表的分组统计和排序。首先创建SqlDataAdapter执行数据表查询操作,然后将查询结果填充到DataSet对象中,最后将DataSet中的数据表绑定到DataGridView控件上。
 在数据表的查询中,一旦进行了分组,就只能得到分组的相关信息。在SQL语句中主要通过COUNT、SUM、MAX、MIN和AVG五个关键字获取分组的相关信息,其中,COUNT表示记录数目,SUM表示字段值求和,MAX表示字段最大值,MIN表示字段最小值,AVG表示字段平均值。对数据表进行分组主要通过GROUP BY关键字。实现对某一字段进行排序则使用ORDER BY关键字,如果需要按降序排列,则在后面加上DESC关键字。实例代码的SQL语句中还用到了AS关键字,该关键字用于为字段的统计结果设置一个别名,当查询结果在控件上显示时,可以为该字段对应的列记录显示该别名 
运行C#代码:

---------------------------------视图查询 ----------------------------
以原数据表staq为例,创建一个含有学号和姓名的视图,将视图中的信息设置为按学生成绩降序排列,且只显示前9条信息。通过查询该视图可直接获取成绩排在前9名的学生学号和姓名
1.新建视图 2.添加数据表
 
 
3.将staq_info表中的id和name字节添加到视图中,并按成绩(result)降序排列 :

SELECT TOP (50) PERCENT id AS 学号, name AS 姓名
FROM dbo.staq_info ORDER BY result DESC
- 百分比与行数:TOP (50) PERCENT会选取表中大约50%的行数。如果表中的行数是一个奇数,那么TOP (50) PERCENT将四舍五入到最接近的整数。
- 排序:由于您使用了ORDER BY result DESC,结果将按照result列的值从高到低排列。
- 列重命名:AS关键字用于为列指定别名,这样查询结果中的列标题将显示为“学号”和“姓名”,而不是原始的列名id和name。
4.视图保存名为:staqView

5.重写窗体的OnLoad事件函数,添加查询代码如下:
 protected override void OnLoad(EventArgs e)
  {
      //创建数据集连接
      SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM staqView",
  "Data Source=.\\SQLExpress;Database=aq;Trusted_Connection=true;");
      DataSet dataSet = new DataSet();                       //创建数据集
      adapter.Fill(dataSet);                                 //用查询结果填充数据集
      dGVStudent.DataSource = dataSet.Tables[0];             //将数据集绑定到控件
  }
6.运行C#代码:
