SQL Not A Single Group Group Function

妖精的绣舞 提交于 2019-12-02 11:59:12
SELECT  DE.Dept_ID as Dept_ID, 
        Dept_Name, 
        COUNT(SR.Sales_Rep_ID) as NumOfSalesR, 
        AVG(Comm_Rate) as AVGCOM 
FROM DEPT_arb DE, SALES_REP_arb SR, COMMISSION_arb C
WHERE DE.Dept_ID = SR.Dept_ID 
GROUP BY E.Dept_ID, 
         Dept_Name, 
ORDER BY C.Comm_Rate; 

You may also consider properly joining the tables, for i.e.:

SELECT  DE.Dept_ID as Dept_ID, 
        Dept_Name, 
        COUNT(SR.Sales_Rep_ID) as NumOfSalesR, 
        AVG(Comm_Rate) as AVGCOM 
FROM DEPT_arb DE
JOIN SALES_REP_arb SR on DE.Dept_ID = SR.Dept_Id
JOIN COMMISION_arb C on SR.Comm_Class = C.Comm_Class
GROUP BY E.Dept_ID, 
         Dept_Name, 
ORDER BY C.Comm_Rate; 

Add a group by.

SELECT DE.Dept_ID as Dept_ID, Dept_Name, 
  COUNT(SR.Sales_Rep_ID) as NumOfSalesR, 
  Comm_Rate as AVGCOM 
FROM DEPT_arb DE, SALES_REP_arb SR, COMMISSION_arb C
WHERE DE.Dept_ID = SR.Dept_ID 
   AND Comm_Rate = (SELECT AVG(Comm_Rate) 
                    FROM COMMISSION_arb 
                    WHERE SR.Comm_Class = C.Comm_Class)
GROUP BY DE.Dept_ID, Dept_Name, Comm_Rate

rewrite this way and see if it gives you what you want...

SELECT d.Dept_ID, d.Dept_Name, 
  Count(r.Sales_Rep_ID) NumOfSalesR, 
  c.Comm_Rate AVGCOM 
FROM DEPT_arb d, 
   Join SALES_REP_arb r
       On r.Dept_ID = d.Dept_ID 
   Join COMMISSION_arb c
       On c.Comm_Class = r.Comm_Class
Group By d.Dept_ID, d.Dept_Name, c.Comm_Rate 
Where c.Comm_Rate = 
       (Select AVG(Comm_Rate)
        From COMMISSION_arb 
        Where Comm_Class = r.Comm_Class)
Order By c.Comm_Rate; 
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!