学习SQL的朋友都知道GROUP BY是用于数据统计的分组功能,本文使用GROUP BY做一个示例。
GROUP BY 语法:
SELECT column_name, function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name
实例
表结构如下:
BookComments
列 名 |
类型 |
长度 |
是否允许为空 |
说明 |
CommentsNo |
bigint |
8 |
否 |
主键 非负 自增 |
BookNo |
varchar |
50 |
否 |
外键 book表主键 |
|
Datetime |
|
是 |
评论生成时间 |
Uid |
Varchar |
10 |
是 |
评论人ID |
Text |
Text |
|
是 |
评论内容 |
BookList表:
列 名 |
类 型 |
大 小 |
是否允许为空 |
说明 |
BookNo |
Varchar |
10 |
否 |
书号 主键 |
BookName |
Varchar |
200 |
否 |
书名 |
Auther |
Varchar |
200 |
否 |
作者 |
Introduction |
Text |
|
是 |
简介 |
Connection conn = DatabaseConn.getConnection(); //此处调用的是前面篇章中的连接池的方法 Statement stm = conn.createStatement(); ResultSet result=stm.executeQuery("" + "select BookComments.BookNo,BookList.BookName,BookList.Auther," + "COUNT(BookComments.BookNo) AS CountNo " + "from BookComments,BookList " + "where BookList.BookNo=BookComments.BookNo " + "GROUP BY BookComments.BookNo,BookList.BookName,BookList.Auther " + "order by CountNo desc ");
实现功能:统计图书的评论数,然后按照从多到少的顺序排列起来,首先使用BookNo将BookComments,BookList连接起来,然后将BookComments.BookNo,BookList.BookName,BookList.Auther这些列聚组,COUNT(BookComments.BookNo) AS CountNo统计不同的BookNo出现的次数,即实现记录评论的数量的目的
|