请教一下大家,我想实现利用数据库的数据,统计一下各个年龄段的购车人数,其计算结果在datagrid上显示出来。
这个的语句应该怎么写呢

解决方案 »

  1.   

    group by 分组
      

  2.   


    Private Sub Command1_Click()
    Dim NLD(1 To 4) As String, RS(1 To 4) As Integer     '定义了二个数组变量
    NLD(1) = "20到29岁"
    NLD(2) = "30到39岁"
    NLD(3) = "40到49岁"
    NLD(4) = "50到59岁"
    Adodc1.RecordSource = "Select ID,年龄 From 购车记录"
      Adodc1.Refresh
      Do While Not Adodc1.Recordset.EOF
      If Adodc1.Recordset.Fields("年龄") >= 20 And Adodc1.Recordset.Fields("年龄") < 30 Then
      RS(1) = RS(1) + 1
      ElseIf Adodc1.Recordset.Fields("年龄") >= 30 And Adodc1.Recordset.Fields("年龄") < 40 Then
      RS(2) = RS(2) + 1
      ElseIf Adodc1.Recordset.Fields("年龄") >= 40 And Adodc1.Recordset.Fields("年龄") < 50 Then
      RS(3) = RS(3) + 1
      ElseIf Adodc1.Recordset.Fields("年龄") >= 50 And Adodc1.Recordset.Fields("年龄") < 60 Then
      RS(4) = RS(4) + 1
      End If
      Adodc1.Recordset.MoveNext
      Loop
      MSHFlexGrid1.Clear
      With MSHFlexGrid1
      .Cols = 3
      .Rows = 5
      .TextMatrix(0, 1) = "年龄段"
      .TextMatrix(0, 2) = "人数"
      .ColWidth(0) = 400
      .ColWidth(1) = 1000
      .ColWidth(2) = 1000
      For I = 1 To 4
      .TextMatrix(I, 1) = NLD(I)
      .TextMatrix(I, 2) = RS(I)
      Next I
      End With
    End Sub
    数据库连接语句略,购车记录的数据表是随意创建的,你可以根据你的数据表就可以了。
      

  3.   

    不用 3 楼那么麻烦,用 Partition 函数就可以。假定你已经知道如何用 Connection 对象连接数据库,且使用了 cn 对象变量:rs.Open "SELECT DISTINCTROW Partition([年龄],0, 60, 10) AS [年龄段], Count(购车记录.ID) As [人数] From 购车记录 GROUP BY Partition([年龄],0,60,10)", cnSet DataGrid1.DataSource = rs
      

  4.   

    group by直接解决,分类汇总么.
      

  5.   

    姓名 年龄
    ==============
    张三  23
    李四  51
    王五  32

    。select convert(varchar(5),段)+'0-'+convert(varchar(5),段)+'9' as 年龄段,人数 from
    (
    select 年龄/10 as 年龄段,count(distinct 姓名) as 人数 from 购车表 group by 年龄/10
    )试试看