0

3 つの異なる成績 A、B、C のパーセンテージを計算したい

1 product have  A grade 
5 products have B grade 
3 products gave C grade 

SQL - このクエリは 3 行を返します

SELECT count(*) FROM table1 WHERE pid = '480' AND grade IN 
  ( SELECT DISTINCT grade FROM table1 ) 
  GROUP BY grade

  ------------------------
   CCA_ST2      count(*)
  ------------------------
     A            1 
     B            5
     C            3
 ------------------------

パーセンテージを計算するにはどうすればよいですか?

   (  SELECT count(*) FROM table1 WHERE pid = '480' AND grade IN 
      ( SELECT DISTINCT grade FROM table1 ) 
      GROUP BY grade
   ) 
   DIVIDE BY 
   ( SELECT COUNT(*) FROM table1 WHERE pid = '480' ) * 100

このクエリで試しました

SELECT grade,
( SELECT count(*) FROM table1 WHERE pid = '480' AND grade IN 
  ( SELECT DISTINCT grade FROM table1 ) 
  GROUP BY grade
) 
/ 
( SELECT count(*) FROM table1 WHERE pid = '480' ) 
* 100 
AS score 
FROM table1 GROUP BY grade

このエラーが発生しました。どうすればこれを解決できますか

subquery returns more than one row 

私は本当にこれのための手順を作成したくありません。これはクエリで実行できることを知っています。しかし、今日はとても怠け者です。

4

1 に答える 1

4

すべてのグループからカウントを取得して合計カウントで割ることはできません。各カウントを合計カウントで割る必要があります。

SELECT
  grade,
  100 * count(*) / (SELECT count(*) FROM table1 WHERE pid = '480') AS score 
FROM table1
WHERE pid = '480'
GROUP BY grade
ORDER BY grade
于 2012-12-16T18:26:28.990 に答える