我有一个大脑放屁,我似乎无法超越它。我以前做过这个,但我不记得我是怎么做到的。这是要点:我有一个我创建的表(测试),在这个表中我存储了一些随机信息。 (这是一个测试表,因此表中的信息不适用于任何事物)。我的测试表看起来像这样:
Name varchar2 Primary key
age varchar2
sex char
social varchar2 Primary Key
我正在使用此表作为示例,这就是为什么我有两个主键。我正在向学生展示如何做复合键。
我的问题是:如何创建一个在行尾有总计数的查询?
我正在寻找类似的东西:
Name Male Female
xxxxx m
xxxxx m
xxxxx m
xxxxx m
xxxxx F
xxxxx F
Total: 4 2
我创建了以下查询(这不太有效),就像测试一样。
set feedback on
compute sum(COUNT(SEX)) LABEL "# of males" of sex_count on report
select count(sex) as sex_count
from test
where sex = upper('m')
答案 0 :(得分:2)
这会解决您的问题吗?
select name, male, female from (
select name,
decode( sex, 'm', 'm', null) Male,
decode( sex, 'f', 'f', null) Female, 0 n
from test
union
select 'Total',
to_char(sum(decode(sex, 'm', 1, 0))),
to_char(sum(decode(sex, 'f', 1, 0))),
1
from test
group by 'Total'
) order by n
答案 1 :(得分:0)
基于“compute ... on report”语句,看起来您正在使用SQL * Plus。试试这个:
compute count label total of male female on report
break on report
select name, decode(sex, 'm', sex) male, decode(sex, 'f', sex) female
from test
order by name;