请教用VB怎么实现筛选年龄区间

daopian8906 2016-06-07 03:58:09
请教一下大家,我想实现利用数据库的数据,统计一下各个年龄段的购车人数,其计算结果在datagrid上显示出来。
这个的语句应该怎么写呢
...全文
2203 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
无·法 2017-03-27
  • 打赏
  • 举报
回复
姓名 年龄 ============== 张三 23 李四 51 王五 32 。 。 select convert(varchar(5),段)+'0-'+convert(varchar(5),段)+'9' as 年龄段,人数 from ( select 年龄/10 as 年龄段,count(distinct 姓名) as 人数 from 购车表 group by 年龄/10 ) 试试看
草履虫程序员 2017-03-26
  • 打赏
  • 举报
回复
group by直接解决,分类汇总么.
of123 2016-06-12
  • 打赏
  • 举报
回复
不用 3 楼那么麻烦,用 Partition 函数就可以。 假定你已经知道如何用 Connection 对象连接数据库,且使用了 cn 对象变量: rs.Open "SELECT DISTINCTROW Partition([年龄],0, 60, 10) AS [年龄段], Count(购车记录.ID) As [人数] From 购车记录 GROUP BY Partition([年龄],0,60,10)", cn Set DataGrid1.DataSource = rs
ZHRXJR 2016-06-11
  • 打赏
  • 举报
回复

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

数据库连接语句略,购车记录的数据表是随意创建的,你可以根据你的数据表就可以了。
daopian8906 2016-06-08
  • 打赏
  • 举报
回复
这是什么意思?
vansoft 2016-06-07
  • 打赏
  • 举报
回复
group by 分组

1,217

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧