2

我有一个类似于下面的表格。我需要获得每个地区的百分比,但要获得它,我必须获得总和,因为它并不总是 100。

Customer  Region  Quantity
--------  ------  --------
1         East     10
2         West     10
3         South    10
4         South    10
5         South    10
6         South    10
7         South    10
8         North    10
9         North    10
10        North    10

结果应该是:

Region  Percent
------  -------
West     10% 
East     10%
South    50%
North    30%

如果我按区域分组,我只能获得该区域的总和,但我需要整个结果的总和。

4

4 回答 4

3

使用子查询值表达式:

SELECT
   Region,
   Percent =
      Sum(Quantity) * 100.0
      / (SELECT Sum(Quantity) FROM dbo.Table)
FROM dbo.Table
GROUP BY Region

-- alternate denominator for SQL Server 2005 and up:
/ Sum(Quantity) OVER () 
于 2012-12-25T08:32:48.213 回答
0

像这样:

SELECT 
  region, 
  COUNT(Quantity) / 
  (SELECT COUNT(*)
   FROM Table1) * 100 AS "ThePercent"
FROM Table1
GROUP BY region;

SQL 小提琴演示

这会给你:

| REGION | THEPERCENT |
-----------------------
|   East |         10 |
|  North |         30 |
|  South |         50 |
|   West |         10 |

如果您需要%为每个百分比打印,您应该使用您的 RDBMS 连接方式来执行此操作。但是您没有指定您使用的是什么 RDBMS,所以您必须这样做。

于 2012-12-25T08:30:38.683 回答
0

这将是:

SELECT Region, 
       COUNT(Quantity)*100.0/(SELECT COUNT(*) FROM Your_Table) AS percentage
       FROM Your_Table
WHERE Region IS not null
GROUP BY Region

SQL 小提琴演示

输出

REGION  PERCENTAGE
--------------------
East    10
North   30
South   50
West    10
于 2012-12-25T08:33:17.133 回答
0

在 SQLServer2005+ 中使用 OVER 子句和聚合函数

SELECT Region, SUM(Quantity) * 100 / SUM(SUM(Quantity)) OVER () AS Perc
FROM your_table
GROUP BY Region

SQLFiddle上的演示

于 2012-12-25T09:32:26.053 回答