首页 > 试题广场 >

Mysql中表student_table(id,name,b

[单选题]
Mysql中表student_table(id,name,birth,sex),分别查询男生、女生的最大、最小出生日期,如下SQL正确的是()?
  • select sex ,
    min(birth) as min_birth ,
    max(birth) as max_birth
    from student_table where sex = '男'
    group by sex
    union all
    select sex ,
    max(birth) as max_birth ,
    min(birth) as min_birth
    from student_table where sex = '女'
    group by sex ;
  • select sex ,
    max(birth) as max_birth ,
    min(birth) as min_birth
    from student_table where sex = '男' or sex = '女';
  • select sex ,
    max(birth) as max_birth ,
    min(birth) as min_birth
    from student_table;
  • select sex ,
    max(birth) as max_birth ,
    min(birth) as min_birth
    from student_table
    group by sex ;
DROP TABLE IF EXISTS student_table;
CREATE TABLE student_table(
	id INT PRIMARY KEY AUTO_INCREMENT,
	NAME VARCHAR(20),
	birth DATETIME,
	sex CHAR(1)
);

INSERT INTO student_table 
VALUES(NULL,'李明','1998-01-01','男'),
(NULL,'李华','1997-01-01','女'),
(NULL,'张三','1999-01-01','男'),
(NULL,'李四','2000-01-01','女'),
(NULL,'王五','1995-01-01','男'),
(NULL,'小刘','1996-01-01','女');
自己试了一个才弄明白,D选项是对的,A选项是错的,错误原因在于UNION的前后max与min的位置没对应,如果前后max和min位置对应也就争取了,如果没明白的朋友也可以带入代码试一下!
发表于 2022-01-22 15:26:01 回复(4)
A选项上下两句的max和min是反的…
发表于 2021-12-27 13:31:00 回复(5)
我真是服了这个老六,前后两句max和min,位置不一样
发表于 2022-05-28 17:12:37 回复(0)
答案错了吧?分别呀
发表于 2021-12-13 17:36:13 回复(1)
D项查询结果:
SELECT
	sex,
	max( birth ) AS max_birth,
	min( birth ) AS min_birth 
FROM
	student_table 
GROUP BY
	sex;

A项查询结果:
SELECT
	sex,
	min( birth ) AS min_birth,
	max( birth ) AS max_birth 
FROM
	student_table 
WHERE
	sex = '男' 
GROUP BY
	sex UNION ALL
SELECT
	sex,
	max( birth ) AS max_birth,
	min( birth ) AS min_birth 
FROM
	student_table 
WHERE
	sex = '女' 
GROUP BY
	sex;

A项把女生的最大、最小出生日期搞反了,A项要这样改:
SELECT
	sex,
	min( birth ) AS min_birth,
	max( birth ) AS max_birth 
FROM
	student_table 
WHERE
	sex = '男' 
GROUP BY
	sex UNION ALL
SELECT
	sex,
	-- 下面两行换一下位置就对了
	min( birth ) AS min_birth,
	max( birth ) AS max_birth
FROM
	student_table 
WHERE
	sex = '女' 
GROUP BY
	sex;



编辑于 2023-02-24 18:43:11 回复(0)
A其实错在group by 之前用where进行筛选,这样在执行groupby之前,表中只剩下一种性别
发表于 2022-02-08 17:18:33 回复(1)
聚合一般与group by
发表于 2022-10-27 19:30:26 回复(0)
union all 前后,顺序不一致,会以第一个为顺序显示出来
发表于 2024-02-28 04:29:10 回复(0)
属实不够仔细
发表于 2023-07-06 15:52:28 回复(0)
这种题目,这种考法没啥意义,有点抠字眼
发表于 2023-03-29 20:05:09 回复(0)

A 选项中的 SQL 语句会查询男生的最大和最小出生日期,再查询女生的最大和最小出生日期,并将两个结果合并在一起,这可能不是需要的结果。

B 选项中的 SQL 语句会查询所有男生和女生的最大和最小出生日期,不会按照性别分组。

C 选项中的 SQL 语句会查询所有学生的最大和最小出生日期,不会按照性别分组。

发表于 2023-01-27 18:22:36 回复(0)
D选项 表数据要是有其它性别呢?题目只要男女出生日期。较真的话D也不够严谨。
发表于 2022-11-21 14:43:22 回复(0)
A选项***吧,卧槽
发表于 2022-09-10 09:43:57 回复(0)
聚合函数搭配group by一起使用
发表于 2022-05-25 14:19:42 回复(0)
A我是觉得后面那个group by没有必要呢😥
发表于 2022-04-21 16:57:02 回复(0)
D考察的是语句顺序问题。sql执行顺序是from join on where groupby having select orderby,所以这里group by是先把男女分开来了再分别按照sex挑最大最小。做错了思考了一下,虽然也还是不太能想明白。
发表于 2022-03-17 23:20:12 回复(0)
防不胜防
发表于 2022-02-11 21:28:44 回复(0)
D是对的,B的结果为男女生中出生最大、最小的日期,并没有分开输出
发表于 2021-12-30 21:39:05 回复(1)