0

テーブルT1があります:

NAME        GOODS1    .GOODS2  SERVICES
TELENOR       100        0      0
VIP           100       200     350
T-MOBILE      100       100     50

2 つの列だけで結果を取得する必要があります。

GOODS      60
SERVICES   40

したがって、結果は次のとおりです。最初の列では常に値GOODSおよびSERVICESとして(データとしてそれらを配置する方法は?)2番目はSUMのPERCENTAGEで計算されます:

where SUM(GOODS)=SUM(GOODS1+GOODS2)

sum(SERVICES)=sum(SERVICES)

合計金額は1000です。
商品は600(100+100+200+100+100)です。(つまり、1000 の 60% です)
サービスは350+50=400- つまり、1000 の 40% です。

また、この計算を行う方法は?
どうもありがとうございました!!!!

4

4 に答える 4

2
SELECT 
  'GOODS' AS Name, 
  (SUM(Goods1) + SUM(Goods2)) / (SUM(Goods1) + SUM(Goods2) + SUM(Services)) * 100 AS Total
FROM T1
UNION ALL
SELECT 
  'SERVICES' AS Name, 
  SUM(Services) / (SUM(Goods1) + SUM(Goods2) + SUM(Services)) * 100 AS Total
FROM T1

それはあなたに与えるでしょう:

NAME        TOTAL
GOODS       60
SERVICES    40
于 2013-01-13T19:14:56.033 に答える
0

別のアプローチを次に示します。

select c.which,
       sum(case when which = 'GOODS' then Goods1 + GOod2
                else Services
           end) / sum(Goods1+Goods2+Services)*100
from table 1 cross join
     (select 'GOODS' as which union all select 'SERVICES' end) c

これには、テーブルを 1 回スキャンするだけで済みます。

于 2013-01-13T19:34:45.690 に答える
0

全体の合計として出力 1000、商品の合計として 600、サービスの合計として 400 を期待していますか。

もしそうなら、これを試してください:

SELECT 
  SUM(Goods1) + SUM(Goods2) + SUM(Services) as OverallTotal,
  SUM(Goods1) + SUM(Goods2) as GoodsTotal,
  SUM(Services) as ServicesTotal
FROM T1

そしてSQLフィドル

-編集

それらを2つの異なる行として取得することを検討している場合は、次を試すことができますUNION:

SELECT 100*GoodsTotal/OverallTotal
FROM (
SELECT 
  SUM(Goods1) + SUM(Goods2) + SUM(Services) as OverallTotal,
  SUM(Goods1) + SUM(Goods2) as GoodsTotal,
  SUM(Services) as ServicesTotal
FROM T1) AS T
UNION
SELECT 100*ServicesTotal/OverallTotal 
FROM (
SELECT 
  SUM(Goods1) + SUM(Goods2) + SUM(Services) as OverallTotal,
  SUM(Goods1) + SUM(Goods2) as GoodsTotal,
  SUM(Services) as ServicesTotal
FROM T1) AS T

そしてSQLフィドル。幸運を。

于 2013-01-13T19:09:38.847 に答える
0
SELECT
    ((TotalGoods * 100)/ Total) as TotalPercentGoods,
    ((TotalServices * 100) / Total) as TotalPercentServices
FROM 
(
    SELECT 
        SUM(Goods1)+SUM(Goods2)+SUM(SERVICES) as Total,
        SUM(Goods1)+SUM(Goods2) as TotalGoods,
        SUM(Services) as TotalServices
    FROM T1 
) as l

デモ

于 2013-01-13T19:12:20.860 に答える