【问题标题】:Group By with syntax error分组依据语法错误
【发布时间】:2014-02-21 15:53:10
【问题描述】:

这显示为 NULL。

SELECT Gender, SUM( DISTINCT Freq ) AS TotalApp, 
(
    SELECT SUM( Freq ) 
    FROM ucbadmissions
    WHERE Admit = 'Rejected'
    IN (
        SELECT Admit
        FROM ucbadmissions
       )
) AS AdmRate
FROM ucbadmissions
GROUP BY Gender

这显示为错误。

SELECT Gender, SUM( DISTINCT Freq ) AS TotalApp, 
(
    SELECT  SUM( Freq ) 
    FROM ucbadmissions
    WHERE Admit != 'Rejected'
    Group By Gender
) AS AdmRate
FROM ucbadmissions
Group By Gender

表格示例。

承认性别部门频率
录取男 A 512
拒绝男 A 313
录取女 A 89
拒绝女 A 19
拒绝女 B 8
录取女 B 17
拒绝男 B 207
录取男 B 353

【问题讨论】:

    标签: sql sum subquery


    【解决方案1】:
    SELECT      Gender, SUM(Freq) AS TotalApp,
                SUM(CASE WHEN Admit = 'Admitted' THEN Freq ELSE 0 END) / SUM(Freq) AS AdmitRate
    FROM        ucbAdmissions
    GROUP BY    Gender
    

    【讨论】:

    • 谢谢它的工作,我们还没有真正学习案例,所以这就是为什么这有点难。
    【解决方案2】:

    如果我正确理解您的要求,这应该可以解决问题:

    SELECT 
      Gender, 
      SUM(Freq) AS TotalApp,
      SUM(CASE WHEN Admit = 'Rejected' THEN 0 else Freq END) AS AdmRate
    FROM ucbadmissions
    GROUP BY Gender
    

    这将返回性别加上申请总数加上每个性别的成功申请数。

    【讨论】:

    • 对不起,如果我不清楚,我们必须为该行添加所有频率。就像 Totalapp 一样,您将所有男性应用程序相加,而 AdmRate 将是承认的男性/totalapp。如果这更有意义,也感谢您的帮助。
    猜你喜欢
    • 2022-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-13
    • 1970-01-01
    • 2021-10-15
    • 2016-05-01
    • 2015-10-25
    相关资源
    最近更新 更多