1

ユーザーIDと製品の2つの列を持つSQLテーブルがあります。ユーザーIDは一意ですが、製品には3つの値があります[0,1,-1] -1は製品が購入されていないことを表し、1は現在使用されている製品を表し、0は製品が使用されていることを表します使用済み。

私が欲しいのは、テーブル
product used (%) 内の合計ユーザーのパーセンテージ クエリです: ?
現在使用中の製品 (%): ?
売れなかった商品(%): ?

どんな提案や援助も高く評価されます ありがとう

ここに画像の説明を入力
私がこれまでに試したことは何ですか?

Select count(userId) * 100 / (select count(products) Where products = 1) AS perc 
from product group by userid
4

4 に答える 4

4

これを試して:

SELECT SUM(CASE WHEN products = 1 THEN 1 ELSE 0 END) * 100   /
Count(DISTINCT Products.UserID) AS 'Currently used products%',
SUM(CASE WHEN products = 0 THEN 1 ELSE 0 END) * 100   /
Count(DISTINCT Products.UserID) As 'Used products%',
SUM(CASE WHEN products = -1 THEN 1 ELSE 0 END) * 100   /
Count(DISTINCT Products.UserID) AS 'Not sold products%'
FROM Products 
于 2012-09-10T15:29:17.823 に答える
1
SELECT SUM(CASE WHEN Products = 1 THEN 1 ELSE 0 END) * 100 
       / COUNT(DISTINCT UserID) AS product_currently_in_use_pct
     , SUM(CASE WHEN Products = 0 THEN 1 ELSE 0 END) * 100 
        / COUNT(DISTINCT UserID) AS product_used_pct
     , SUM(CASE WHEN Products = -1 THEN 1 ELSE 0 END) * 100 
       / COUNT(DISTINCT UserID) AS product_not_sold_pct
  FROM MyTable
于 2012-09-10T15:48:43.457 に答える
0

あなたもこのように試すことができます。

フィドル

select count(*) total
,count(p1.products)/count(*)*100 as currentlyused
,count(p2.products)/count(*)*100 as used
,count(p3.products)/count(*)*100 as not_sold

from products p
left join products p1 on p1.products=1 and p1.id=p.id
left join products p2 on p2.products=0 and p2.id=p.id
left join products p3 on p3.products=-1  and p3.id=p.id
于 2012-09-10T16:04:50.990 に答える
0
SELECT products,
(convert(numeric(5,2),count(products))/(SELECT convert(numeric(5,2),count(products)) FROM product)) * 100
AS "Percentage"
FROM product GROUP BY products
于 2012-09-10T15:45:59.400 に答える