先来说说排序,排序其实很简单,就是指定查询出的结果中的字段用来排序,字段可以是多个字段。
如创建一张学生表,现在根据性别查询学生,根据学生姓名和年龄排序 组合升序排序。升序是使用ASC字段。
select * from student where sex = 'm' order by stName,age ASC
排序的语句通常是order by [字段1],[字段2] ASC/DESC; DESC代表的是降序排列。
分组其实也比较简单。分组的核心理解应该这样去理解,选定一个表,按照指定字段分组,并统计每一组的个数。如一个学校里边所有的学生在一张表里,这张表中有每个学生的班级id。现在要统计这个学校每个班级有多少学生。就可以用分组来实现。
select classId,count(*) from student where schoolId = 1 GROUP BY classId;
也就是说,分组返回的信息永远是一个用来分组的字段和对这个结果进行操作的函数,一般这个函数可以是count(*),SUM(*),AVG(*)。 这个三个函数分别是,计数,求和,求平均数。函数的参数可以是表达式。SUM函数代表是把分组里边所有的数值相加。count代表每一个分组中有多少条数据。平均数就是每一组的所有数值相加除以总数。
SELECT column_name, function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;
分组语句格式比较单一,所以只要记牢就很好理解了。通常使用时,会将此语句当成一个临时表与其他语句复合嵌套使用。
分组的字段同样可以是多个字段,在学生表里,如一个班级中有男女,同时所有班级的学生在一张表里,现在想知道每个班里有多少人。
就可以根据班级id分组。如果想知道每个班级里的男同学和女同学分别有多少人,那就可以按照班级id和性别分组。在统计数量。
SELECT class_id ,sex,count(*) from student GROUP BY class_id,sex