MySQL基础练习题2

接上篇文章   MySQL基础练习题(一)

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

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

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

select f_name,f_price from fruits order by f_price desc;

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

select * from fruits order by f_name desc,f_name;

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

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

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

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

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;

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;

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

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

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

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

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

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

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

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

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

SELECT o_num, SUM(quantity * item_price) AS orderTotalFROM orderitemsGROUP BY o_numHAVING SUM(quantity*item_price) >= 100;select o_num,sum(quantity * item_price) as ordertotal from orderitems group by o_num having sum(quantity*item_price) >= 80;

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

select * from fruits limit 4;

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

select * from fruits limit 4,3;

33.查询customers1表中总的行数

select count(*) as goods_num from customers;

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

select count(c_email) as email_num from customers; 复制代码

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

select count(f_id) as o_num from fruits;

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

select sum(quantity) from orderitems;

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

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

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

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

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

select max(f_price) from fruits;

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

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

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

select max(f_name) from fruits;

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

select min(f_name) from fruits;

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

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

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

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

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

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






全部评论
楼主一定很精通mysql吧
点赞 回复 分享
发布于 2022-08-17 19:53 陕西

相关推荐

在喝茶的牛油很喜欢吃卤蛋:今天oc了
点赞 评论 收藏
分享
有担当的灰太狼又在摸鱼:零帧起手查看图片
点赞 评论 收藏
分享
评论
2
5
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务