请求帮助分解SQL代码 - MS SQL Server

时间:2016-05-05 05:28:08

标签: sql sql-server database sql-server-2008

关于MS SQL Server代码,SQL Fiddle目前处于关注状态,因此这里是一个包含DDL的.txt的保管箱链接,用于创建我使用的模式:

https://www.dropbox.com/s/6si4r37449q3ajb/DDL.txt?dl=0

我正在学习考试,我知道这是一种更有效的编码方式,我只是不知道它是什么。

5。找出安装了最多个人计算机的部门。

select top(1) pc.location, count(pc.location) as number_of_comps_in_dept
from pc
group by location
order by number_of_comps_in_dept desc

我上面的代码有效,但是如果我想获得部门名称(在这种情况下标记为位置)怎么办?我无法通过我当前的代码重新调用单个值 - 这对于程序,函数和触发器来说并不友好。

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

您可以删除SELECT语句中的其他列。但是,您需要将ORDER BY子句中的列替换为聚合:

select top(1) pc.location
from pc
group by location
order by count(pc.location) desc

ONLINE DEMO

答案 1 :(得分:1)

使用子查询的结果仅获取depratment名称

SELECT Dept_with_Max_Computers
FROM
(
select top(1) pc.location Dept_with_Max_Computers, count(pc.location) as number_of_comps_in_dept
from pc
group by location
order by number_of_comps_in_dept desc
) Z