Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL group by抛出错误_Sql - Fatal编程技术网

SQL group by抛出错误

SQL group by抛出错误,sql,Sql,我想显示在特定域中拥有最大CTC的员工的姓名 select Domain, max(CTC) from Employee group by Domain 这将显示特定域的域和最大CTC select Domain, max(CTC) from Employee group by Domain 但是如果我使用 select Domain,empname, max(CTC) from Employee group by Domain 然后它的显示错误是显而易见的 所以,如果我修改它,就要协调它

我想显示在特定域中拥有最大CTC的员工的姓名

select Domain, max(CTC) from Employee group by Domain
这将显示特定域的域和最大CTC

select Domain, max(CTC) from Employee group by Domain
但是如果我使用

select Domain,empname, max(CTC) from Employee group by Domain
然后它的显示错误是显而易见的 所以,如果我修改它,就要协调它

select Domain,empname, max(CTC) from Employee group by Domain,empname
它给出了错误的输出

但我需要显示员工姓名以及域名和最大CTC。 任何帮助都将不胜感激

select m.Domain, e.empname, m.max_CTC 
from Employee e
join (select Domain, max(CTC) max_CTC from Employee group by Domain) m
on e.Domain = m.Domain
and e.CTC = m.max_CTC
这是你的建议试试这个

SELECT E.Domain,E.empname,E.CTC FROM
Employee E JOIN
(select Domain,max(CTC) MaxCTC from Employee group by Domain) T
ON E.Domain = T.Domain AND E.CTC = T.MaxCTC

问题:

使用聚合函数时,需要按select查询中的所有其他列名进行分组

解决方案:

你必须使用连接

试试这个:

SELECT E2.Domain,E1.empname,E2.MaxVal as Max
FROM Employee E1 INNER JOIN
(SELECT Domain,MAX(CTC) as MaxVal FROM Employee GROUP BY Domain) E2 
ON E1.Domain=E2.Domain

只要试试这段代码,这很简单

select MAX(Domain),empname, max(CTC) from Employee group by empname

一个域是否有多个员工?例如,如果一个域有5名员工,那么所需的输出是否为5行,其中包含每个员工、域和最大值(CTC)的名称?一个域包含多个员工。对于您的示例,所需的输出将是1行或多行,其中包含最大CTC的员工