SQL查询以打印名称和顺序打印职业
Posted
技术标签:
【中文标题】SQL查询以打印名称和顺序打印职业【英文标题】:SQL query to print occupation with print name with order 【发布时间】:2018-09-16 13:33:03 【问题描述】:查询 OCCUPATIONS 中所有名称的按字母顺序排列的列表,紧随其后的是每个职业的第一个字母作为括号(即:括在括号中)。
例如:
AnActorName(A), ADoctorName(D), AProfessorName(P), and ASingerName(S)
查询OCCUPATIONS中每个职业出现的次数。将出现的次数按升序排序,并按以下格式输出:
SELECT name||'('||SUBSTR(occupation, 1, 1)||')'
FROM occupations
ORDER BY name
UNION
SELECT "There are a total of"|| count(*) from occupations group by occupation;
【问题讨论】:
不清楚你的问题是什么。 请给出样本输入输出数据 SQL 中字符串常量需要用单 引号括起来,双引号用于列名或表名。 docs.oracle.com/en/database/oracle/oracle-database/12.2/sqlrf/… 【参考方案1】:带代码的输入和输出示例:
create table ns_occupations(name varchar(20));
insert into NS_OCCUPATIONS values('AActorName');
insert into NS_OCCUPATIONS values('ADoctorName');
insert into NS_OCCUPATIONS values('AProfessorName');
insert into NS_OCCUPATIONS values('ASingerName');
insert into NS_OCCUPATIONS values('ASingerName');
select * from NS_OCCUPATIONS;
SELECT name||'('||SUBSTR(name, 2, 1)||')' shortname,count(*) no_of_occupations
FROM ns_occupations
group by name||'('||SUBSTR(name, 2, 1)||')';
output:
ADoctorName(D) 1
AActorName(A) 1
AProfessorName(P) 1
ASingerName(S) 2
【讨论】:
【参考方案2】:当你使用UNION/UNION ALL
时,ORDER BY
必须是最后一个子句:
SELECT name||'('||SUBSTR(occupation, 1, 1)||')' AS col
FROM occupations
union
select 'There are a total of'|| count(*)
from occupations
group by occupation
ORDER BY CASE WHEN col LIKE 'There are a total%' THEN 1 ELSE 0 END, col;
【讨论】:
@a_horse_with_no_name 谢谢,有趣的是,在从 OP 的核心复制粘贴期间,我在WHERE
子句中更改了它:)【参考方案3】:
从职业中选择名称+'('+left(occupation,1)+')' 按名称排序 联盟 select '总共有'+convert(nvarchar,count(occupation))+' '+occupation+'s.'从职业 按职业分组 按数量(职业)排序;
【讨论】:
【参考方案4】:select concat(name, '(',left(occupation,1),')')
from occupations
order by name asc;
select 'There are a total of ' ,count(occupation) ,concat(lower(occupation), 's.')
from occupations
group by occupation
order by count(occupation) asc, occupation asc;
//status of Testcase passed
【讨论】:
正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center。以上是关于SQL查询以打印名称和顺序打印职业的主要内容,如果未能解决你的问题,请参考以下文章