微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为约束为的列选择最大值

如何解决为约束为的列选择最大值

| 表如下 公司,垂直,计数 对于每个公司,我想根据具有最高计数的特定行业来获得计数的总和 公司垂直计数 IBM财务10 IBM研发5 IBM PR 2 我想得到以下输出 IBM财务17     

解决方法

        自联接应该做到这一点。
select company,vertical,total_count
from(
    select sum(counts) as total_count
    from table
    )a
cross join table
where counts=(select max(counts) from table);
根据您的RDBMS,您还可以使用窗口函数(例如,sum(count)over()作为total_count),而不必担心交叉联接。     ,        这与“如何获取MAX行”的问题有所不同(DBA.SE链接) 通过简单的汇总即可获得每个公司的总计和最高垂直 使用这些来标识源表中的行 这样的东西,未经测试
SELECT
    t.Company,t.Vertical,m.CompanyCount
FROM
    ( --get total and highest vertical  per Company
    SELECT
        COUNT(*) AS CompanyCount,MAX(Vertical) AS CompanyMaxVertical,Company
    FROM MyTable
    GROUP BY Company
    ) m
    JOIN --back to get the row for that company with  highest vertical
    MyTable t ON m.Company = t.Company AND m.CompanyMaxVertical = t.Vertical
编辑:这比ROW_NUMBER更接近标准SQL,因为我们不知道平台     ,        
select Company,Vertical,SumCounts
from (       
        select Company,row_number() over(partition by Company order by Counts desc) as rn,sum(Counts) over(partition by Company) as SumCounts
        from YourTable
     ) as T
where rn = 1
    ,        
SELECT company,total_sum
FROM (
    SELECT Company,sum(counts) over (partition by null) as total_sum,rank() over (order by counts desc) as count_rank
    FROM the_table
) t
WHERE count_rank = 1
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。