A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wstgzy 初级黑马   /  2019-5-31 13:12  /  755 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/*----【排序查询 order by】----*/
SELECT * FROM t_user;
-- 需求:按数学成绩从低到高排序,缺考的排到最后
SELECT * FROM t_user ORDER BY math;
SELECT * FROM t_user ORDER BY math ASC;-- ASC表示升序,默认排序方式就是升序
-- 需求:按英语成绩从高到低排序,缺考的排到最上面
SELECT * FROM t_user ORDER BY english DESC;-- 缺考的为NULL值,默认会排到最后
SELECT * FROM t_user ORDER BY IFNULL(english,101) DESC;
-- 需求:依次按数学成绩、英语成绩由高到低排列
SELECT * FROM t_user ORDER BY math DESC,english DESC;-- 多字段联合排序
-- 需求:依次按总分、数学成绩、英语成绩由高到低排列
SELECT
    id,
    NAME,
    age,
    gender,
    address,
    math,
    english,
    math + english AS totalScore
FROM
    t_user
ORDER BY math + english DESC,
    math DESC,
    english DESC ;


SELECT * FROM t_user;
/*----【聚合函数】----*/
-- 语法格式:select 聚合函数名(字段名) from 表名;
-- 需求:查询英语最高分是多少
SELECT MAX(english) FROM t_user;
-- 需求:查询英语最高分是谁,如果有并列最高的,都输出
SELECT NAME,english FROM t_user WHERE english=MAX(english);-- ---------------?????????
-- 需求:查看有多少人
SELECT COUNT(id) FROM t_user;-- 一般选用主键进行计算,因为主键是不允许空值的。
SELECT COUNT(english) FROM t_user;-- 英语成绩中有一个NULL值,聚合函数计算是排除NULL值,结果会少1条
SELECT COUNT(IFNULL(english,0)) FROM t_user;-- 对NULL的处理
SELECT COUNT(*) FROM t_user;-- 直接输入一个"*",也是统计有多少条记录


SELECT * FROM t_user;
/*----【分组查询 group by】----
  group by常结合 where子句、having子句一起用
  语法格式:
        select 字段1,字段2... from 表名 [where 条件表达式] group by 要分组的字段名 [having 条件表达式];
*/
-- 需求:将所有人按性别进行分组
-- select后的字段,一般都是写“要分组的字段”或者“聚合函数”
SELECT gender FROM t_user GROUP BY gender;
SELECT * FROM t_user GROUP BY gender;-- 筛选结果极具误导性,不能用这种方式去查询
-- 需求:分别查询男生、女生的数学平均分
SELECT gender,AVG(math) FROM t_user GROUP BY gender;
-- 需求:分别查询男生、女生的数学平均分。缺考及低于60分的人,不参与统计。
SELECT gender,AVG(math) FROM t_user WHERE math>=60 GROUP BY gender;
-- 需求:按男女性别分开,对各自的高分人群的数学均分进行统计。高分指90及以上。
SELECT gender,AVG(math) FROM t_user WHERE math>=90 GROUP BY gender;
-- 需求:分别查询男、女同学的数学均分,人数。
--       要求:分数低于70分的人不参与分组;
--                 分组统计的结果中,参与统计的人数要大于2个人。
SELECT
    gender,
    AVG(math),
    COUNT(id)
FROM
    t_user
WHERE math >= 70
GROUP BY gender
HAVING COUNT(id) > 2 ;


SELECT * FROM t_user;
/*----【分页查询 limit子句】----*/
-- limit子句的格式:limit offset,length;
-- 需求:查询t_user表中第3~8行数据
SELECT * FROM t_user LIMIT 3,6;

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马