如何在sql中使用带有部分数字的解码

问题描述 投票:1回答:2

我正在做一项家庭作业,我需要使用其电话号码上的解码功能来确定一个国家/地区的雇员人数及其平均工资。电话号码的格式为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;

我应如何在解码功能中输入前缀以使电话号码与某个国家/地区匹配的任何帮助?

sql oracle group-by count
2个回答
1
投票

您可以在此处使用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, '^[^.]+');

1
投票

您可以使用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'
    )
© www.soinside.com 2019 - 2024. All rights reserved.