2013-09-19 2 views
3

Я не очень много в SQL & Apex, но мне нужно одно утверждение, и я был бы очень признателен за вашу помощь в этом. Синтаксис Apex круговых диаграмм заключается в следующем:Oracle Apex Pie Chart SQL Statement

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 наименованиями должны сочетаться с одним «другим». Трудность для меня состоит в том, чтобы объединить «неважные» компании.

До сих пор мое заявление выглядит следующим образом:

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

Здесь прекрасная схема эскиз. : D enter image description here

Благодарим вас за идеи!

ответ

0

Хорошо, ребята, я нашел ответ для своего прецедента. Его очень похоже на ответ Оллиса. Спасибо еще раз за помощь!

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 
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; 

Надеется, что это помогает!

+0

Спасибо за ответ! Но я немного смущен, откуда происходит «item_count» в последнем операторе SELECT? Соответственно, какую информацию я должен вставить? – OldForester

+0

@OldForester Я считаю, что 'count (id)' в подзапросе company_group должен был быть псевдонимом с 'item_count'. Первоначально он был только во втором редактировании Олли, он, вероятно, забыл это сделать, поэтому я его отредактировал. – Tom

+0

Хорошо, я добавил предложение GROUP BY в первый оператор подзапроса из-за функции count. Синтаксис прав, но теперь на диаграмме показана только метка «другое» и количество строк. Он идет в правильном направлении, но одна деталь все еще отсутствует. – OldForester