Схема таблицы
CREATE TABLE customer (
id NUMERIC,
lname VARCHAR (30),
fname VARCHAR (30) NOT NULL,
street VARCHAR (30) NOT NULL,
city VARCHAR (30) NOT NULL,
zipcode NUMERIC (5) NOT NULL,
state VARCHAR (2) NOT NULL,
phone VARCHAR (12) NOT NULL,
creditscore NUMERIC,
credit_org VARCHAR (30),
cs_date DATE,
CONSTRAINT customer_pk PRIMARY KEY (id)
);
Требование:
Часть 1. Создайте сводную таблицу для перечисления количества клиентов по местоположению («PA», «CA», «NY», «MD»), а также по диапазону кредитов. Для диапазона кредитов создайте 3 сегмента: «НИЖНИЙ ДИАПАЗОН (500-600)», определенный как сегменты с кредитным баллом от 500 до 600, «СРЕДНИЙ ДИАПАЗОН (600-700)», определенный как сегменты с кредитным баллом от 600 до 700, «ПРЕМИУМ». ДИАПАЗОН (700+) 'определяется как лица с кредитным рейтингом 700+. Результат сводной таблицы должен включать 4 столбца для состояний и 3 строки для диапазона кредитов.
Часть 2: Добавьте итоговую строку, чтобы указать общее количество клиентов для соответствующих состояний. Ранжируйте состояния на основе общего количества клиентов.
Дополнительные требования Оцените штаты по общему количеству клиентов сначала в премиальном диапазоне, затем в среднем диапазоне, а затем в более низком диапазоне.
Мое мнение
SELECT * FROM (
SELECT case
when CREDITSCORE between 500 and 600 then 'LOWER RANGE(500-600)'
when CREDITSCORE <= 700 then 'AVERAGE RANGE(600-700)'
else 'PREMIUM RANGE(700+)'
end as CREDITSCORE_RANGE,
state
FROM customer
)
PIVOT (
count(state) FOR state IN ('PA', 'CA', 'NY', 'MD')
);
Это правильно в части 1
Мой вопрос: как решить часть 2 и возможно ли это вообще?
Изменить 1:
МОЙ подход к вышеизложенному с использованием DECODE
ВЫБРАТЬ ДЕКОДИРОВАНИЕ (случай, когда CREDITSCORE ‹= 600, затем« НИЖНИЙ ДИАПАЗОН (500-600) », когда CREDITSCORE‹ = 700, затем «СРЕДНИЙ ДИАПАЗОН (600-700)» иначе «ПРЕМИУМ ДИАПАЗОН (700+)» конец, NULL, «ИТОГО» , случай, когда CREDITSCORE между 500 и 600, затем «НИЖНИЙ ДИАПАЗОН (500-600)», когда CREDITSCORE ‹= 700, затем« СРЕДНИЙ ДИАПАЗОН (600-700) », иначе« ПРЕМИУМ ДИАПАЗОН (700+) »конец)« CREDITSCORE_RANGE », СУММ ( DECODE (штат, 'PA', 1, 0)) «Пенсильвания», SUM (DECODE (штат, 'CA', 1, 0)) «Калифорния», SUM (DECODE (штат, 'NY', 1, 0) ) «Нью-Йорк», SUM (DECODE (state, 'MD', 1, 0)) «Мэриленд», count (CREDITSCORE) «Общее количество клиентов», RANK () OVER (ORDER BY Count (CREDITSCORE) DESC) » РАНГ ПО КОЛИЧЕСТВУ КЛИЕНТОВ "ИЗ ГРУППЫ клиентов ПО РОЛИКЕ (случай, когда CREDITSCORE от 500 до 600, затем" НИЖНИЙ ДИАПАЗОН (500-600) ", когда CREDITSCORE‹ = 700, затем "СРЕДНИЙ ДИАПАЗОН (600-700)" иначе "ПРЕМИУМ ДИАПАЗОН (700+) 'конец);