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查询以打印名称和顺序打印职业的主要内容,如果未能解决你的问题,请参考以下文章

sql查询只打印第一行

基于 SQL 查询中最接近的文本匹配连接表?

怎么把数据库查询的结果保存到map中

为啥sql查询结果会打印出不需要的字符?

使用 SQL 查询打印素数

Spring Batch:Hibernate 打印 SQL 查询和所用时间