2016-04-23 81 views
-1

“显示与每个本科相关专业的号码,只包括具有专业2和10之间的节目”我需要一列显示值的行#

SELECT prg_field AS "College", prg_name AS "Number of Majors" 
FROM program 
WHERE prg_type = 'U' 

我的“专业学生数“专栏作为主要名称出现,我如何将其更改为与大学的prg_field专栏相关的值?

回答

0

如果我理解正确,您想要查找每个学院的不同prg_name的编号。如果这是正确的,你可以得到不同的集学院/专业,然后计算每个学院的专业如下:

;WITH distSets as (
SELECT DISTINCT prg_field as 'College', prg_name as 'Number of Majors' 
) 

Select 
    College 
    ,COUNT(*) over (partition by College) as 'Count of Majors' 
From distSets 

有可能是另一种方式,如果你不能使用一个CTE来格式化这个。 希望这有助于。

0
SELECT prg_field AS "College", 
     COUNT(prg_name) AS "Number of Majors" 
FROM program 
WHERE prg_type = 'U' 
GROUP BY prg_field 
HAVING COUNT(prg_name) BETWEEN 2 AND 10; 

如果有重复prg_name当时的使用COUNT(DISTINCT prg_name)代替COUNT(prg_name)顶部和底部。

+0

是的!这工作。我不记得COUNT函数。谢谢! – Deniz

+0

@Deniz如果这个问题或其他答案已经解决了您的问题,那么您可以接受答案(使用答案旁边的投票按钮下方的复选标记)以指示问题已关闭。如果它没有回答你的问题,那么你可以发表评论,详细说明未解决的问题。 – MT0

0

考虑派生表子查询:

SELECT t1.prg_field AS "College", Count(*) As "Number Of Distinct Majors" 
FROM 
    (SELECT DISTINCT prg_field, prg_name 
    FROM program 
    WHERE prg_type = 'U') t1 
GROUP BY t1.prg_field 
HAVING Count(*) BETWEEN 2 AND 10