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

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 に答える
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 に答える