17.查询s_id=81或者s_id=82的水果供应商的f_price和f_name。
select f_price,f_name from fruits where s_id=81 or s_id=82;
18.查询s_id=81或者s_id=82的水果供应商的f_price和f_name
select f_price,f_name from fruits where s_id=81 or s_id=82;
19.查询fruits表中s_id字段的值,返回s_id字段值且不得重复。
select distinct s_id from fruits;
20.查询fruits表的f_name字段值,并对其进行排序。
select f_name from fruits order by f_name;
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 f_price,f_name from fruits order by f_price 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;
以id分组,把去冗余的name字段的值打印在一行, 逗号分隔
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
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 子句不能。