这个sql怎么实现

踏破铁鞋无觅处 发布于 2018/08/08 20:03
阅读 449
收藏 0

 

数据库表如下图,取出不同性别的最大年龄,并附加最大年龄的性别和姓名,这个功能怎么实现啊?

加载中
0
魔力猫
魔力猫

可以开窗口吗?给一个你想要的结果集样式。

魔力猫
魔力猫
回复 @踏破铁鞋无觅处 : 下面跟了,看看是否符合你的需要。
踏破铁鞋无觅处
踏破铁鞋无觅处
可以的
0
大洋的彼岸
大洋的彼岸

select name,sex from 某表,(select  max(age) as 年龄最大的男性 from 某表 where sex='男') t1,(select  max(age) as 年龄最大的女性 from 某表 where sex='女' ) t2 where age=t1.年龄最大的男性 or age=t2.年龄最大的女性

大洋的彼岸
大洋的彼岸
回复 @踏破铁鞋无觅处 : 子查询的别名
踏破铁鞋无觅处
踏破铁鞋无觅处
兄弟 你这个不对啊,t1和t2是给列起的别名啊, 因为在同一列,这个男女最大年龄不能同时查出来,我应该没理解搓你的想法吧
0
不知名的
不知名的

select name,sex,max(age) form user where sex='男'

union all

select name,sex,max(age) form user where sex='女'

踏破铁鞋无觅处
踏破铁鞋无觅处
回复 @MZHS : 我是用的本地“mysql5.7“好像不支持这种查询方式,服务器上用的5.5版本大倒是可以。 而且我从别的地方看到,5.7之后使用group by,group by 之外的属性不能查询,除非有聚合函数
MZHS
MZHS
回复 @踏破铁鞋无觅处 : 也可以使用group by age desc limit 1然后union all
MZHS
MZHS
回复 @踏破铁鞋无觅处 : 两句子查询每句后面添加个group by sex就可以 了
踏破铁鞋无觅处
踏破铁鞋无觅处
不对啊 兄弟 select name,sex,max(age) form user where sex='男' 光这一句就不能执行
0
瞌睡来了
瞌睡来了

rank() over() 函数了解一下

0
魔力猫
魔力猫

SELECT distinct sex, max(age) over (partition by sex), max(name) over (partition by sex)
 FROM world.x1;

0
java大神起床啦
java大神起床啦

select `name` ,sex,age from `user` WHERE age=(select MAX(age) from `user` where  sex='男') 
UNION ALL
select `name` ,sex,age from `user` WHERE age=(select MAX(age) from `user` where  sex='女')
 

踏破铁鞋无觅处
踏破铁鞋无觅处
select `name` ,sex,age from `user` WHERE age=(select MAX(age) from `user` where sex='男') and sex='男' UNION ALL ........ and sex='女
0
z
zhr008

上面的好像水平一般。。。

SELECT N'张三' AS NAME, N'男' AS sex, 23 AS age
INTO #temp
UNION ALL
SELECT N'李四', N'男', 22
UNION ALL
SELECT N'王五', N'女', 22
UNION ALL
SELECT N'田六', N'女', 18

SELECT a.*
FROM #temp a, (SELECT sex, max(age) AS age FROM #temp b GROUP BY sex ) b
WHERE a.sex = b.sex AND a.age = b.age

DROP TABLE #temp

 

踏破铁鞋无觅处
踏破铁鞋无觅处
你这个是存储过程吗 现在我还看不太懂 改天好好看看
0
z
zhr008

引用来自“魔力猫”的评论

SELECT distinct sex, max(age) over (partition by sex), max(name) over (partition by sex)
 FROM world.x1;

你的结果错了。是 min(name) , 但是你这种写法,我还真是第一次看。666 

魔力猫
魔力猫
这是窗口函数。
0
暴猿
暴猿

select max(age),sex,name from test group by sex;

0
z
zhr008

引用来自“暴猿”的评论

select max(age),sex,name from test group by sex;

一看就知道跑不了。。。

踏破铁鞋无觅处
踏破铁鞋无觅处
这个在mysql5.7版本之前是可以查出来结果的 但是5.7之后就不可以了 我就用的5.7之后的
返回顶部
顶部