当前位置:  开发笔记 > 数据库 > 正文

按第一个字符分组

如何解决《按第一个字符分组》经验,为你挑选了2个好方法。

我在Oracle SQL中遇到问题.

first_nameemployees表格中有一列.我想根据第一个字符对我的记录进行分组first_name.

例如,我有26条记录,一个用name = 'Alice',一用name = 'Bob',等下来的字母表每个名称的第一个字符.查询后,应该有26个组,每个组有一名员工.

我尝试了以下,但它不起作用:

SELECT employee_id, (SUBSTR(first_name,1,1)) AS alpha FROM employees
GROUP BY alpha;

name_which_starts_from       employees  
A                            10  
B                            2  
C                            4  
D                            9  
E                            3  
G                            3  
H                            3  
I                            2  
J                            16  
K                            7  
L                            6  
M                            6  
N                            4  
O                            1  
P                            6  
R                            3  
S                            13  
T                            4  
V                            2  
W                            3  

Pablo Santa .. 57

您的查询是错误的,因为如果您希望这样做,您需要在EMPLOYEE_ID上执行一些聚合功能.

喜欢:

select substr(first_name,1,1) as alpha, count(employee_id)
  from employees
 group by substr(first_name,1,1)

你究竟想要完成什么?



1> Pablo Santa ..:

您的查询是错误的,因为如果您希望这样做,您需要在EMPLOYEE_ID上执行一些聚合功能.

喜欢:

select substr(first_name,1,1) as alpha, count(employee_id)
  from employees
 group by substr(first_name,1,1)

你究竟想要完成什么?


不会"按alpha分组"工作吗?

2> yukondude..:

您需要按非聚合函数的所有内容进行分组,因此您不能在SELECT投影中使用employee_id.您还需要仅按first_name的第一个字符进行分组.这样的事情应该有效:

SELECT  SUBSTR(first_name, 1, 1) AS alpha, COUNT(*) AS employee_count
FROM    employees
GROUP   BY SUBSTR(first_name, 1, 1);

这将按名字的第一个字母分组,并显示属于该组的员工数量.

推荐阅读
爱唱歌的郭少文_
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有