如何解决为约束为的列选择最大值
| 表如下 公司,垂直,计数 对于每个公司,我想根据具有最高计数的特定行业来获得计数的总和 公司垂直计数 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 举报,一经查实,本站将立刻删除。