sql - 如何通过语句在分区上向行号添加条件
问题描述
我正在尝试根据总销售额为客户分配顶级商店,然后仅按国家/地区销售额。
我意识到如果我创建一个新的销售领域但只是想节省时间,我可能会得到这个。想法?
有关我正在使用的代码,请参见下文
select client_id
,region
,country
,row_number() over(partition by clientid order by sales desc) as rank
,case when region='US' then row_number() over(partition by sas_id order by sales desc) else 0 end as usrank
ClientID Region Store sales Rank USRank1 USRank 2
A US 20 100 2 2 1
B US 30 5 6 6 2
C CA 100 20 4 0 0
D CA 120 10 5 0 0
E MX 200 300 1 0 0
F MX 230 50 3 0 0
解决方案
在第二种情况下,您需要一个 sum(),按国家/地区分组。
SELECT client_id,
region,
country,
ROW_NUMBER () OVER (PARTITION BY clientid ORDER BY sales DESC) AS RANK,
sum (sales) OVER (PARTITION BY clientid ORDER BY sales DESC) as CNTRY_RANK
推荐阅读
- javascript - 无法使用 ERR_CERT_COMMON_NAME_INVALID 在 CodeSandbox.io 上获取 API?
- bluetooth-lowenergy - (ESP-IDF) 通过 BLE 发送 .txt 文件(日志数据)?(从 ESP32 到 Android 手机的大文件)
- postgresql - 为什么我在恢复我的数据库时收到错误代码失败,退出代码为 1
- python - 我在 python 中收到此错误:“AttributeError:'str' 对象没有属性'set'”。我正在使用 tkinter,我该如何解决这个问题?
- typescript - Firebase:在与 Firestore 的交易中使用转换器
- c# - TLSharp 库能够发送带有“粗体”、“斜体”的消息吗?
- javascript - 如何仅在 H3 中获取 hexRing() 的外边缘的顶点?
- html - 如何让这个侧边栏出现在右边而不是左边?
- javascript - 在 ElasticSearch 中为文档字段赋予不同的优先级
- android-room - 尝试从分页 3 寻呼机内的房间获取寻呼源时出现“无法访问主线程上的数据库”错误