2016-05-20 3 views
-1

Возможно ли и может кто-нибудь, пожалуйста, дать мне хороший пример выбора в одном запросе результирующего набора, который возвращает количество демографических или других групп по определенной группе? Это действительно звучит загадочно, поэтому я собираюсь добавить пример вывода того, что я пытаюсь установить. Я хочу, чтобы результат установлен как:oracle sql statement, чтобы получить счет с точкой опоры, группой или окном? oracle 11g

enter image description here

Таким образом, для каждого класса графа полей, которые заполняются для гендер, подсчет Мужчину, подсчет Женщины, подсчет сколько рас, которые заселены и так далее.

Так что-то вроде Select curricul.class, граф (stu.gender), граф (stu.race), граф (stu.eth) из curricul, Стю группу по классу пивот (COUNT (пол) для пол в (мужской, женский)

+0

вы не сказали нам ничего о данных, вы работаете с, структур таблиц, или то, что происходит с вами запрос» (что в синтаксисе старого стиля, с присоединением ANSI было бы более очевидно, что вам не хватает условий соединения). И почему h вы включили изображение вместо текста, показывающего, что вы хотите? Это не похоже на то, что вы хотите повернуть. Возможно, вы ищете 'count (case ... end)', чтобы получить номера мужчин и женщин? –

ответ

3

вы могли бы просто использовать:

with curricul as 
(select 1 classid, 'Math' class from dual union all 
select 2, 'Literature' from dual 
) 
, 
student as 
(select 1 id, 1 classid, 'male' gender, 1 race, 1 eth from dual union all 
    select 2, 1, 'female', 1, 2 from dual union all 
    select 3, 1, 'male' , 3, 1 from dual union all 
    select 4, 1, 'male' , 5, 7 from dual union all 
    select 5, 1, 'female', 4, 8 from dual union all 
    select 6, 1, 'male' , 1, 6 from dual union all 
    select 7, 2, 'female', 3, 4 from dual union all 
    select 8, 2, 'female', 1, 1 from dual union all 
    select 9, 2, 'female', 7, 9 from dual union all 
    select 10, 2, 'male' , 9, 1 from dual union all 
    select 11, 2, 'female', 8, 1 from dual 
) 
select s.classid, curricul.class 
    ,count(s.gender) as count_gender 
    ,sum(case when gender = 'male' then 1 else 0 end) as count_male 
    ,sum(case when gender = 'female' then 1 else 0 end) as count_female 
    ,count(s.race) as count_race 
    ,count(s.eth) as count_ethnicity 
from student s 
inner join curricul 
    on s.classid = curricul.classid 
group by s.classid, curricul.class ; 
+2

Если пол является нулевым, то 'count (gender)' и 'count (*)' могут давать разные результаты. Точно так же вы можете не хотеть отличий в ваших подсчетах - это может просто подсчитать, сколько заполнено, особенно. учитывая номера в примере. Фактически, в нем говорится, что в вопросе во втором-последнем абзаце. –

+0

@AlexPoole ах, спасибо за обнуление и объяснение –

 Смежные вопросы

  • Нет связанных вопросов^_^