Как использовать декодирование с частью числа в sql - PullRequest
1 голос
/ 13 апреля 2020

Я работаю над домашней работой, где мне нужно выбрать количество сотрудников и их среднюю зарплату в стране, используя функцию декодирования их номера телефона, чтобы определить страну. Номер телефона в формате 123.465.7890, и я должен определить страну на основе префикса номера телефона (011. * = США и т. Д. c.)

SELECT DECODE (PHONE_NUMBER, 011. , 'USA', 515. , 'Germany', 590. , 'Canada', 603.,'France'),avg(salary), count(*)
FROM zamestnanci
group by phone_number;

Любая помощь с тем, как следует Я ввожу префикс в функцию декодирования, чтобы можно было сопоставить номера телефонов с конкретной страной?

Ответы [ 2 ]

1 голос
/ 13 апреля 2020

Вы можете использовать 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 голос
/ 13 апреля 2020

Вы можете использовать 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'
    )
...