首页 > 代码库 > 带你玩转JavaWeb开发之六-mysql基本语法详解及实例(4)

带你玩转JavaWeb开发之六-mysql基本语法详解及实例(4)

按照分类的名称统计每个分类商品所花的总钱数【排序查询】

SQL中对查询的列进行排序,使用关键字order by。默认情况下是升序的排序(从小到大的排序顺序关键字 asc)。使用降序排序需要使用关键字desc。

查询学生的信息,对查询到的信息根据语文分数进行排序。

默认情况

技术分享

添加asc的情况:

技术分享

按照语文的分数从大到小排序。

技术分享

按照英语成绩降序排序,如果英语分数一致,按照数学分数降序排序。

技术分享

查询所有姓梁的学生,按照数学降序排序。

技术分享

【聚合函数】

sum();     ---求和。

avg();     ---求平均值。

count();       ---统计个数。

max();     ---求最大值。

min();     ---求最小值。

 

统计表中的所有学生的个数。

技术分享

统计表中姓梁的学生的个数

技术分享

计算所有学生的英语成绩的总分

技术分享

计算各个学科的学生的总成绩

技术分享

目前两个查询的结果是一样的,但是实质上两种查询不一样的。上面的是竖着统计的值,而下面的是横向统计的值。目前值一样。

现在插入空值:

技术分享

技术分享

技术分享

横着统计,NULL+78+92 最终结果是NULL.竖着方向sum(english)+sum(math)+sum(chinese)将78和92的值也都统计进来了。也可以使用ifnull函数。

技术分享

求出数学平均成绩

技术分享

技术分享

取出数学的最高分是多少

技术分享

获得语文成绩的最低分是多少

技术分享

获得姓张的同学的语文成绩的最高分

技术分享

【查询的分组】

对得到的数据进行分组,使用的关键字group by 。分组的主要的目的是与聚合函数一起使用进行数据的统计情况的分析。

create table product(

    id int primary key auto_increment,

    name varchar(20),

    price double,

    cname varchar(20)

);

insert into product values (null,‘洗衣机‘,1000,‘家用电器‘);

insert into product values (null,‘冰箱‘,3000,‘家用电器‘);

insert into product values (null,‘洗衣机‘,1000,‘家用电器‘);

insert into product values (null,‘空调‘,2000,‘家用电器‘);

insert into product values (null,‘电脑‘,4000,‘电脑办公‘);

insert into product values (null,‘机械键盘‘,300,‘电脑办公‘);

insert into product values (null,‘机械键盘‘,300,‘电脑办公‘);

 

按商品的名称进行分组。

技术分享

按商品的分类的名称进行分组

技术分享

按照商品名称统计每个商品所购买的个数

技术分享

按照商品的名称统计每类商品所花的总钱数

技术分享

获得家用电器类的商品所花的总金额

技术分享

按照分类的名称统计每个分类商品所花的总钱数。查询出总钱数大于5000的有哪些。

技术分享

以上的写法是错误的!!!因为where条件后不能加聚合函数。带分组统计的条件,需要加在having后面。

技术分享

1.1.1.2  对查询语句进行总结:

查询的语句是变化最多的语句。结构如下:

Select … From … where … group by … having … order by …;

SFWGHO…

带你玩转JavaWeb开发之六-mysql基本语法详解及实例(4)