2 hailunjieyingyu HaiLunJieYingYu 于 2016.01.21 08:31 提问

请找出报销次数最多的员工信息,要求不能用IN。

员工信息表:

编号,手机,职务

A1,13609081861,PM

A2,13609081234,AM

A3,13609123456,GM

A6,12345678990,CIO

A7,12341343542,CTO

A8,12324532334,FIO

报销信息表:

员工编号,报销金额,备注(允许为NULL)

A1,1800

A2,800

A3,800

A3,1500

A3,600

A6 3000

A7,1800

5个回答

enpterexpress
enpterexpress   2016.01.21 09:29

图片说明

kkoofire
kkoofire 明显没有认真看题目。人家问的是报销次数最多,而不是金额最多
接近 2 年之前 回复
HaiLunJieYingYu
HaiLunJieYingYu 回复sinat_31535993: 认同你的说话!
接近 2 年之前 回复
sinat_31535993
sinat_31535993 回复sinat_31535993: 而且你自己看数据看不出结果吗?明显A3报销次数最多,你的结果却是A6。
接近 2 年之前 回复
sinat_31535993
sinat_31535993 次数最多的就是第一个?如果10个人都报销了10次,难道最多只有1个?
接近 2 年之前 回复
Royal_lr
Royal_lr   Ds   Rxr 2016.01.21 09:30

报销次数最多也就是报销金额最多,,找到报销金额最多的就行了

kkoofire
kkoofire 智商捉急!报10次1块的 和报1次100块的那个多?
接近 2 年之前 回复
sinat_31535993
sinat_31535993 这个思路真搞笑,我一个月每天报销2块钱车费,另一个人一个月一次报销住院费5W,你告诉我住院的那个人报销的次数最多?
接近 2 年之前 回复
danielinbiti
danielinbiti   Ds   Rxr 2016.01.21 10:19
 select A.* FROM (
SELECT DISTINCT 员工编号 as 员工编号 FROM (
SELECT t.*,MAX(cn) over(partition by r) MX from (
SELECT '1' r ,t.* ,count(*) over(partition by 员工编号) cn from 报销信息表 t
) t 
) T WHERE MX = CN
) B left join 员工信息表 A on 员工信息表.编号=B.员工编号
kkoofire
kkoofire   2016.01.28 11:32

表a:员工信息表
表b:报销信息表
;WITH x AS (SELECT id,COUNT(id) cnt FROM b GROUP BY id)
SELECT a.* FROM a INNER JOIN (SELECT x.id FROM x WHERE x.cnt=(SELECT MAX(cnt) FROM x)) y ON a.id=y.id

sinat_31535993
sinat_31535993   Rxr 2016.01.21 09:23

select max(t.count) ,t.* from (select count(a.员工编号) count,a.员工编号,b.手机,b.职务 from 报销信息表 a left join 员工信息表 b on a.员工编号=b.员工编号 group by a.员工编号,b.手机,b.职务) t;

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!