根据条件按国家和指数计算 SQL 分区中的市场总和
Calculate sum of market in SQL partition by country and index with conditions
我有一个数据集,其中我必须计算 SQL 服务器分区中的市场总和,按国家和指数划分,条件如下:
如果按国家/地区索引仅为 1,则 Indexmark 输出将为 0,如果按国家/地区索引=>1,则将取市场价值总和而不取索引 1 市场价值
需要说明的是,如果索引值为 1,则索引标记应为 0,如果索引为 1 且大于 1,则取市场价值之和,不包括索引 1 的市场价值
输入:
Country Index Market
--------------------
India 1 100
US 1 200
UK 7 400
US 6 600
UK 3 800
输出:
Country Index Market IndMark
----------------------------
India 1 100 0
US 1 200 600
UK 7 400 1200
US 6 600 600
UK 3 800 1200
我尝试使用下面的 SQL 查询,但它没有给我预期的结果
SELECT
Country, Index, Market,
SUM(Market) OVER (PARTITION BY Country, (Index > 1) AS IndMark
FROM
table
具有SUM()
window功能:
SELECT *,
COALESCE(SUM(CASE WHEN [Index] > 1 THEN [Market] END) OVER (PARTITION BY [Country]), 0) [IndexMark]
FROM tablename
参见demo。
我有一个数据集,其中我必须计算 SQL 服务器分区中的市场总和,按国家和指数划分,条件如下:
如果按国家/地区索引仅为 1,则 Indexmark 输出将为 0,如果按国家/地区索引=>1,则将取市场价值总和而不取索引 1 市场价值
需要说明的是,如果索引值为 1,则索引标记应为 0,如果索引为 1 且大于 1,则取市场价值之和,不包括索引 1 的市场价值
输入:
Country Index Market
--------------------
India 1 100
US 1 200
UK 7 400
US 6 600
UK 3 800
输出:
Country Index Market IndMark
----------------------------
India 1 100 0
US 1 200 600
UK 7 400 1200
US 6 600 600
UK 3 800 1200
我尝试使用下面的 SQL 查询,但它没有给我预期的结果
SELECT
Country, Index, Market,
SUM(Market) OVER (PARTITION BY Country, (Index > 1) AS IndMark
FROM
table
具有SUM()
window功能:
SELECT *,
COALESCE(SUM(CASE WHEN [Index] > 1 THEN [Market] END) OVER (PARTITION BY [Country]), 0) [IndexMark]
FROM tablename
参见demo。