mysql数据库基础练习2

155 阅读3分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第19天

接上篇文章 mysql数据库的基础练习

21.查询fruits表中的f_name和f_price字段,先按f_name排序,再按f_price排序。

select f_name,f_price from fruits order by f_name,f_price;

图片.png

22.查询fruits表中的f_name和f_price字段,对结果按f_price降序方式排序。

select f_name,f_price from fruits order by f_price desc;

图片.png

23.查询fruits表,先按f_price降序排序,再按f_name字段升序排序。

select * from fruits order by f_name desc,f_name;

图片.png

24.根据s_id对fruits表中的数据进行分组。

select s_id count(*) as total from fruits group by s_id;

图片.png

25.根据s_id对fruits表中的数据进行分组,将每个供应商的水果名称显示出来。

SELECT s_id, COUNT(*) AS Total FROM fruits GROUP BY s_id WITH ROLLUP;

图片.png

26.根据s_id对fruits表中的数据进行分组,并显示水果种类大于1的分组信息。

select s_id, GROUP_CONCAT(f_name) as names from fruits group by s_id having count(f_name) > 1;

图片.png

group_concat()函数的用法

group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符'])

27.以id分组,把name字段的值打印在一行,逗号分隔(默认)

select s_id,group_concat(f_name) from fruits group by s_id;

图片.png

以id分组,把name字段的值打印在一行,分号分隔

select s_id,group_concat(f_name separator ';') from fruits group by s_id;

图片.png

select s_id,group_concat(distinct f_name) from fruits group by s_id;

图片.png

以id分组,把name字段的值打印在一行,逗号分隔,以name排倒序

select s_id,group_concat(f_name order by f_name desc) from fruits group by s_id;

图片.png

28.根据s_id对fruits表中的数据进行分组,并显示记录数量。

select s_id, count(*) from fruits group by s_id with rollup;

图片.png

29.根据s_id和f_name字段对fruits表中的数据进行分组。

select s_id & f_name from fruits group by s_id & f_name;

图片.png

30.查询订单价格大于80的订单号和总订单价格。

SELECT o_num, SUM(quantity * item_price) AS orderTotalFROM orderitemsGROUP BY o_numHAVING SUM(qu

图片.png

图片.png

31.显示fruits表查询结果的前4行。

select * from fruits limit 4;

图片.png

32.在fruits表中,使用LIMIT子句,返回从第5个记录开始的,行数长度为3的记录。

select * from fruits limit 4,3;

图片.png

33.查询customers1表中总的行数

select count(*) as goods_num  from customers;

图片.png

34.查询customers1表中有电子邮箱的顾客的总数查询customers1表中有电子邮箱的顾客的总数。

select count(c_email) as email_num from customers;

35.在orderitems表中,使用COUNT()函数统计不同订单号中订购的水果种类。

select count(f_id) as o_num from fruits;

图片.png

36.在orderitems表中,使用SUM()函数统计不同订单号中订购的水果总量。

select  sum(quantity)  from orderitems;

图片.png

37.在fruits表中,查询s_id=83的供应商的水果价格的平均值。

select avg(f_price) as avg_price from fruits  where s_id = 83;

图片.png

38.在fruits表中,查询每一个供应商的水果价格的平均值。

select s_id,avg(f_price) as avg_price from fruits group by s_id;

图片.png

39.在fruits表中查找市场上价格最高的水果。

 select max(f_price) from fruits;

图片.png

40.在fruits表中查找不同供应商提供的价格最高的水果。

select distinct s_id,max(f_price) minpri  from fruits group by s_id;

图片.png

41.在fruits表中查找f_name的最大值。

select max(f_name) from fruits;

图片.png

42.在fruits表中查找市场上价格最低的水果。

select min(f_name) from fruits;

图片.png

43.在fruits表中查找不同供应商提供的价格最低的水果。

select distinct s_id,min(f_price) minpri  from fruits group by s_id;

图片.png

注意:where 子句和 having 子句都具有按照条件筛选数据的功能,两者之间的区别主要有:

where 子句再进行分组操作前用来选择记录,而having 子句在进行分组操作之后通过过滤来选择分组;

having 子句中的每个字段必须包含在select 关键字后的字段列表中;

having 子句可以包含聚合函数,但是where 子句不能。