我正在做一项家庭作业,我需要使用其电话号码上的解码功能来确定一个国家/地区的雇员人数及其平均工资。电话号码的格式为123.465.7890,我应该根据电话号码的前缀来确定国家/地区(011. * =美国等)
SELECT DECODE (PHONE_NUMBER, 011. , 'USA', 515. , 'Germany', 590. , 'Canada', 603.,'France'),avg(salary), count(*)
FROM zamestnanci
group by phone_number;
我应如何在解码功能中输入前缀以使电话号码与某个国家/地区匹配的任何帮助?
您可以在此处使用REGEXP_SUBSTR
:
SELECT
DECODE(REGEXP_SUBSTR(PHONE_NUMBER, '^[^.]+'),
'011', 'USA',
'515', 'Germany',
'590', 'Canada',
'603', 'France'),
AVG(salary),
COUNT(*)
FROM zamestnanci
GROUP BY
REGEXP_SUBSTR(PHONE_NUMBER, '^[^.]+');
您可以使用substr提取电话号码的相关部分:
SELECT
DECODE (
SUBSTR(PHONE_NUMBER, 1, 3),
'011', 'USA',
'515', 'Germany',
'590', 'Canada',
'603', 'France'
),
AVG(salary),
COUNT(*)
FROM zamestnanci
GROUP BY DECODE (
SUBSTR(PHONE_NUMBER, 1, 3),
'011', 'USA',
'515', 'Germany',
'590', 'Canada',
'603', 'France'
)