Oracle Apex 5: Использование нескольких столбцов в гистограммах Axix

Я пытаюсь создать гистограмму, которая показывает значения нескольких столбцов из таблицы. Это очень простая гистограмма, которую я не могу понять, как ее создать в APEX 5 / SQL.

Диаграмма, описывающая, что я имею в виду

По сути, я хочу, чтобы на оси X гистограммы была полоса для каждого столбца моей таблицы (который я выбираю), и полоса будет представлять сумму этого столбца, сгруппированного по столбцу с именем appname.

Я знаю, что мне понадобится:

ВЫБРАТЬ СУММУ (столбцы) ИЗ myTable GROUP BY appname

Но я не могу заставить гистограмму представлять каждый выбранный мной столбец.

Надеюсь, я хорошо объяснил это, мои коллеги, которые не знают, как помочь, говорят, что я плохо объясняю вещи.


person Rhenderson91    schedule 06.06.2017    source источник


Ответы (2)


Это можно сделать, но, насколько мне известно, только для фиксированного количества наборов данных. Вот что мне удалось сделать с фиктивными данными:  введите описание изображения здесь

Что вам нужно сделать, это сначала создать диаграмму для одного из наборов, например:

select code, sum(value) as total
  from data
 where app_id = 1
 group by code
 order by code

Это дает следующее (с моими примерами данных):  введите описание изображения здесь

Теперь, когда вы посмотрите на определение региона, вы увидите, что регион содержит одну «серию»: < img src = "https://i.stack.imgur.com/e0l7C.png" alt = "введите описание изображения здесь">

(По умолчанию он называется «Серия 1» - но я уже переименовал свой в «Приложение 1»).

Теперь вы можете щелкнуть правой кнопкой мыши серию 1 и выбрать «Дублировать», и будет создана новая повторяющаяся серия. Затем вы можете отредактировать имя и SQL этой новой серии, чтобы они ссылались на приложение 2. Затем, когда вы запустите это, вы увидите результат, который я показал в начале.

person Tony Andrews    schedule 06.06.2017
comment
Спасибо! Это сделал именно то, что я хотел! Я не подозревал о возможности дублировать серию. - person Rhenderson91; 07.06.2017

Вот что вам нужно сделать. В исходном SQL-коде диаграммы определите что-то вроде этого

SELECT SUM(column1) as col_sum,
       Column1 as Series,
       column1 as Column_name
       FROM myTable GROUP BY appname
       sort by appname

union all

SELECT SUM(column2) as col_sum,
       Column2 as Series,
       column3 as Column_name
       FROM myTable GROUP BY appname
       sort by appname

union all

SELECT SUM(column3) as Col1_sum,
       Column3 as Series,
       column3 as Column_name
       FROM myTable GROUP BY appname
       sort by appname

------ и так далее - для всех столбцов ----- В свойствах серии установите «Источники»> «Тип» как «Источник региона».

В сопоставлении столбцов выберите «Серии» как «Имя серии», «Имя столбца» как «Метка» и «col_sum» как значение.

В атрибутах диаграммы Внешний вид> Стек - установите Нет.

Это должно сработать.

В качестве альтернативы вместо использования union all вы также можете определить отдельный SQL-запрос для каждой серии и иметь одну серию для каждого столбца. В этом случае вам не потребуется Series в вашем запросе.

person Sejal Parikh    schedule 03.07.2017