sql - 如何从每个国家/地区提取前 10 位亿万富翁
问题描述
假设我有一个名为的表,其中包含来自每个国家/地区的亿万富翁个人的Billionaires
属性Country
, Name
, 。Net Worth
我希望每个国家/地区拥有最高净资产的前 10 名个人的净资产加起来。
样本输出就像
国家 | 全网 |
---|---|
我们。 | 500000000000 |
印度。 | 300000000000 |
等等。
我尝试过的代码:
Select Country, Sum(NetWorth) over (partition by country) as TotalNetworth
From Billionaires
解决方案
DENSE_RANK() 函数在这里适用于检索国家排名前 10 的个人亿万富翁。如果两个人在一个国家/地区拥有相同的净资产,则将其视为 1 而不是 2。 DENSE_RANK() 提供没有差距的排名。
-- SQL SERVER
SELECT t.Country
, SUM(t.NetWorth) TotalNetworth
FROM (SELECT Country
, NetWorth
, DENSE_RANK() OVER (PARTITION BY Country ORDER BY NetWorth DESC) rank_num
FROM Billionaires) t
WHERE t.rank_num <= 10
GROUP BY t.Country;
但是,如果需要国家明智的前 10 名亿万富翁的名字,那么使用下面的查询如果一个国家的两个人拥有相同的净资产,那么计数是 2 而不是 1。
-- SQL SERVER
SELECT t.Country
, SUM(t.NetWorth) TotalNetworth
FROM (SELECT Country
, NetWorth
, ROW_NUMBER() OVER (PARTITION BY Country ORDER BY NetWorth DESC) rank_num
FROM Billionaires) t
WHERE t.rank_num <= 10
GROUP BY t.Country;
推荐阅读
- vba - 对具有相同产品名称但不同值的行求和 Excel vba
- docker - hub.docker.com 构建的命名约定是什么
- python - 为什么取消 qfiledialog 有错误?
- google-apps-script - 使用 Google Apps 脚本将 Google 幻灯片演示文稿下载为 PowerPoint 文档?
- git - 以编程方式显示合并期间使用的所有 git rerere 分辨率
- oracle - DBMS_SCHEDULING 重复间隔 - 半小时,9-5,周一至周五
- python - Django 对过去 10 周内每周的值求和
- opencv - 使用内部和外部相机参数进行图像匹配
- flutter - How to change language of system clipboard text (Copy, Paste etc.,) to Chinese in Flutter?
- sql-server - 有没有办法回滚事务中的特定保存点?