gpt4 book ai didi

sql - oracle sql select 与员工

转载 作者:搜寻专家 更新时间:2023-10-30 23:11:24 25 4
gpt4 key购买 nike

我有一个有趣的问题,但无法解决。请帮助!!!!

它们是表格

t_employee
ID NUMBER,
DEPARTMENT_ID NUMBER,
CHIEF_ID NUMBER,
NAME VARCHAR2(100 BYTE),
SALARY NUMBER,
BIRTH_DATE DATE,
ADDRESS VARCHAR2(200 BYTE),
STATUS VARCHAR2(1 BYTE)

t_department
ID NUMBER,
NAME VARCHAR2(100 BYTE)

需要显示每个地区的员工数量 - 在地址列中(如果他们现在是地区则 = 'No' area)。转换为大写的区域名称。

有什么问题?问题是地址列有非结构化数据,例如:地址:

Country,REGION,city,... 

所以 REGION 总是必须在第一个 (,) 和第二个 (,) 之间并且必须包含单词 (reg)例如:

Russia(Country), reg Moskovskay ,  Moscow(city), Lenina, (street)  .... or 
Russia(Country), Moskovskay reg , Moscow(city), Lenina, (street) .... or

分隔符是 (,)位置是-第二

非常感谢!

最佳答案

自由格式的字符串在数据库中很少是个好主意,这个查询将无法使用索引,这很可能会使其执行缓慢;

WITH a AS ( SELECT TRIM(
REPLACE(
UPPER(
REGEXP_SUBSTR(ADDRESS, ',([^,]*),', 1, 1, 'i', 1)
),
' REG ', ''
)
) REGION
FROM t_employee)
SELECT REGION, COUNT(*) cnt FROM a GROUP BY REGION

An SQLfiddle to test with .

关于sql - oracle sql select 与员工,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19582917/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com