谈谈使用过的几款咖啡机

一亩三分地论坛

 找回密码
 Sign Up 注册获取更多干货

最近看过此主题的会员

H1B/绿卡遥遥无期
又不想回国
来东南亚最大的互联网集团工作?
码农求职神器Triplebyte:
不用海投
内推多家公司面试
坐标湾区
Games Startup
招聘游戏开发工程师
游戏初创公司招聘工程师、UIUX Designer和游戏策划
查看: 590|回复: 9
收起左侧

求问一道SQL高频题

[复制链接] |试试Instant~ |关注本帖
我的人缘0
xjoxjoxjo 发表于 2018-5-22 11:52:06 | 显示全部楼层 |阅读模式
  此人我要顶:
 
0% (暂未有人投票) 【我投】
  此人我要踩:
 
0% (暂未有人投票) 【我投】

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?Sign Up 注册获取更多干货

x
求问利扣上一道SQL题:https://leetcode.com/problems/de ... salary/description/我写的是这样:
SELECT D.Name AS Department, E.Name AS Employee, E.Salary
FROM Employee AS E
JOIN Department AS D. 一亩-三分-地,独家发布
ON E.DepartmentId=D.Id
WHERE 1>
(SELECT count(E1.Salary)
FROM Employee AS E1
WHERE E1.Salary> E.Salary
AND E.DepartmentId=E1.DepartmentId
GROUP BY E.DepartmentId);
. more info on 1point3acres
去掉最后一排的group by才返回正确答案,否则什么也不返回。我知道还有别的优化做法,但为什么我后面加一个GROUP BY E.DepartmentId就不对了?
求大神解答一下,感谢~

上一篇:找工作迷茫求各位帮忙解惑
下一篇:fb blueprint 柜惊

本帖被以下淘专辑推荐:

  • · BA|主题: 86, 订阅: 11
我的人缘0
忽尔今夏 发表于 2018-5-24 07:05:09 | 显示全部楼层
  此人我要顶:
 
100% (2) 【我投】
  此人我要踩:
 
0% (0) 【我投】
SELECT b.Name AS Department, a.Name AS Employee, a.Salary. from: 1point3acres
FROM Employee a
JOIN Department b
ON a.DepartmentId = b.Id
WHERE (a.DepartmentId, a.Salary) in
   (SELECT DepartmentId, Max(Salary) AS Salary
    FROM Employee
    GROUP BY DepartmentId)
回复 支持 2 反对 0

使用道具 举报

我的人缘0
belindamao 发表于 2018-5-24 06:41:44 | 显示全部楼层
  此人我要顶:
 
0% (暂未有人投票) 【我投】
  此人我要踩:
 
0% (暂未有人投票) 【我投】
我也遇到这个问题了,我用了group by为啥感觉都不对。而且用R或者python来处理数据,思维就是先group再排列比较啊。。。不懂为何不对。求大神解释
回复 支持 反对

使用道具 举报

我的人缘0
misslost 发表于 2018-5-25 22:50:12 | 显示全部楼层
  此人我要顶:
 
100% (8) 【我投】
  此人我要踩:
 
0% (0) 【我投】
是不是leetcode用的都是MySQL 不能用window function啊哭.....
. visit 1point3acres for more.
select c.Name as Department, b.Employee, b.Salary
from
(select Name as Employee, Salary, DepartmentId
from
(select *, row_number() over (partition by DepartmentId order by Salary desc) as row_num
from Employee) a
where row_num=1) b
left join Department c
on b.DepartmentId = c.Id
回复 支持 反对

使用道具 举报

我的人缘0
Feiyan 发表于 2018-5-31 13:57:43 | 显示全部楼层
  此人我要顶:
 
76% (10) 【我投】
  此人我要踩:
 
24% (3) 【我投】
我不是很懂MYSQL的syntax,但我理解的是count()的group by的是来自你外层的D.Name AS Department, E.Name AS Employee, E.Salary,你再加一个GROUP BY E.DepartmentId其实多余,居然没有报语法错误,如果能多跑几个test case可能能知道为什么。因为这种写法,其实是用Employee E cartesian join Employee E1, where E1.Salary> E.Salary AND E.DepartmentId=E1.DepartmentId.   
回复 支持 反对

使用道具 举报

我的人缘0
Feiyan 发表于 2018-5-31 14:00:00 | 显示全部楼层
  此人我要顶:
 
76% (10) 【我投】
  此人我要踩:
 
24% (3) 【我投】
misslost 发表于 2018-5-25 22:50
是不是leetcode用的都是MySQL 不能用window function啊哭.....

select c.Name as Department, b.Employe ...

leetcode有oracle,oracle有这个window function。你写的都对,但是要用rank() 不能用 row_number(),要不然这道题就是easy了
回复 支持 反对

使用道具 举报

我的人缘0
emilyylau 发表于 2018-6-1 11:15:22 | 显示全部楼层
  此人我要顶:
 
100% (1) 【我投】
  此人我要踩:
 
0% (0) 【我投】
[SQL] 纯文本查看 复制代码
select Department
,   Name as Employee
,   Salary
from 
( 
SELECT a.*
,   b.Name as Department
,   rank() over (partition by b.Name order by a.Salary desc) as rankid 
FROM Employee A 
INNER JOIN Department B
ON A.DepartmentId = B.Id) x
where rankid = 1 
回复 支持 反对

使用道具 举报

我的人缘0
kedalg 发表于 2018-6-1 14:20:19 | 显示全部楼层
  此人我要顶:
 
100% (1) 【我投】
  此人我要踩:
 
0% (0) 【我投】
当E.Salary最大时括号里的结果集是空集而不是{0},这会导致结果集和1无法比较
回复 支持 反对

使用道具 举报

我的人缘0
QuantX 发表于 2018-6-14 08:42:34 | 显示全部楼层
  此人我要顶:
 
0% (暂未有人投票) 【我投】
  此人我要踩:
 
0% (暂未有人投票) 【我投】
select
Department.Name as Department,
Employee.Name as Employee,
Employee.Salary as Salary
from Employee join Department on employee.departmentid=department.id.留学论坛-一亩-三分地
where (employee.departmentid, employee.salary) in (select e2.departmentid, max(e2.salary) from employee e2 group by 1);
回复 支持 反对

使用道具 举报

我的人缘0
zhangxqs08 发表于 12 小时前 | 显示全部楼层
  此人我要顶:
 
0% (暂未有人投票) 【我投】
  此人我要踩:
 
0% (暂未有人投票) 【我投】
已经有了E.DepartmentId=E1.DepartmentId就不需要group by了吧
回复 支持 反对

使用道具 举报

游客
请先登录

本版积分规则

提醒:发帖可以选择内容隐藏,部分板块支持匿名发帖。请认真读完以下全部说明:

■隐藏内容方法: [hide=200]你想要隐藏的内容比如面经[/hide]
■意思是:用户积分低于200则看不到被隐藏的内容
■可以自行设置积分值,不建议太高(200以上太多人看不到),也不建议太低(那就没必要隐藏了)
■建议只隐藏关键内容,比如具体的面试题目、涉及隐私的信息,大部分内容没必要隐藏。
■微信/QQ/电子邮件等,为防止将来被骚扰甚至人肉,以论坛私信方式发给对方最安全。
■匿名发帖的板块和方法:http://www.1point3acres.com/bbs/thread-405991-1-1.html





手机版|小黑屋|一亩三分地论坛声明

custom counter

GMT+8, 2018-6-24 17:04

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

快速回复 返回顶部 返回列表