3

私はSQLとApexにはあまり興味がありませんが、1つのステートメントが必要です.これについてあなたの助けを本当に感謝します. Apex 円グラフの構文は次のとおりです。

SELECT link, label, value

私のテーブルは、これらの簡単なスケッチのようになります。

+------+-----------+---------+
| ID   | Company   | Item    |
+------+-----------+---------+
| 1    | AAA       |Some     |
| 2    | BB        |Stuff    |
| 3    | BB        |Not      |
| 4    | CCCC      |Important|
| 5    | AAA       |For      |
| 6    | DDDDD     |Question?|
+------+-----------+---------+

企業の割合を示したい。

問題:項目が 5 つ未満のすべての会社は、1 つの列 "other" に結合する必要があります。私にとって難しいのは、「重要でない」会社を結合することです。

これまでの私のステートメントは次のようになります。

SELECT null link, 
company label, 
COUNT(ID) value FROM table HAVING COUNT(ID) > 5 GROUP BY company

ここに素晴らしいダイアグラム スケッチがあります。:Dここに画像の説明を入力

あなたのアイデアをありがとう!

4

2 に答える 2

1

私は目の前にSQL Developerを持っていませんが、これ(またはそれに近いバリエーション)がうまくいくはずです:

WITH company_count
  AS (
      SELECT CASE
                WHEN count(*) < 5
                THEN 'Other'
                ELSE company
              END AS company_name,
             id
        FROM tablename
      ),
      company_group
  AS (
      SELECT company_name,
             count(id) item_count
        FROM company_count
       GROUP BY company_name
     )
SELECT NULL AS link,
       company_name AS label,
       item_count AS value
  FROM company_group;

それが役に立てば幸い!

于 2013-09-19T20:44:18.577 に答える
0

さて、ユースケースの答えが見つかりました。Olliesの回答と非常によく似ています。助けてくれてありがとう!

 WITH sq1 AS (SELECT company, COUNT (*) AS count FROM 
 (SELECT CASE WHEN COUNT (*) OVER  (Partition By company) > 5 THEN company
 ELSE 'other' END AS company, id FROM table) GROUP BY company)

 SELECT null link, company label, count value FROM sq1 ORDER BY count desc
于 2013-09-25T21:10:48.027 に答える