【问题标题】:SQL query to print occupation with print name with orderSQL查询以打印名称和顺序打印职业
【发布时间】:2025-11-23 15:30:01
【问题描述】:

查询 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 oracle subquery


【解决方案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
      最近更新 更多