Nie sądzę, aby twoje zakresy były odpowiednie dla napisanego zapytania, chociaż sformułowanie przypisania jest niejednoznaczne, ponieważ „pomiędzy” jest inkluzywne – więc w przypadku sformułowania pytania wynik kredytowy równy 600 pojawi się w obu nawiasy „dolny” i „średni”. Twoja wersja umieści 600 w „dolnym” nawiasie, ale jest dyskusyjne, w którym miejscu; Myślę, że powinno to być „średnie” z innych definicji, ale jest to niejasne. W pytaniu nie ma nawiasu dla wyników mniejszych niż 500, ale jeśli masz którykolwiek z nich, twój obecny kod uwzględni je w nawiasie „średnim”, ponieważ są one mniejsze niż 700, ale nie między 500 a 600.
Zinterpretowałbym to jako:
SELECT * FROM (
SELECT case
when CREDITSCORE >= 500 and CREDITSCORE < 600 then 'LOWER RANGE(500-600)'
when CREDITSCORE >= 600 and CREDITSCORE < 700 then 'AVERAGE RANGE(600-700)'
when CREDITSCORE >= 700 then 'PREMIUM RANGE(700+)'
end as CREDITSCORE_RANGE,
state
FROM customer
)
PIVOT (
count(state) FOR state IN ('PA' as pa, 'CA' as ca, 'NY' as ny, 'MD' as md)
);
Tytuł twojego pytania odnosi się do ROLLUP, a aby uzyskać całkowity wiersz, możesz użyć tej funkcji:
SELECT creditscore_range, sum(pa) AS pa, sum(ca) AS ca, sum(ny) AS ny, sum(md) AS md
FROM (
SELECT * FROM (
SELECT CASE
WHEN creditscore >= 500 AND creditscore < 600 THEN 'LOWER RANGE(500-600)'
WHEN creditscore >= 600 AND creditscore < 700 THEN 'AVERAGE RANGE(600-700)'
WHEN creditscore >= 700 THEN 'PREMIUM RANGE(700+)'
END AS creditscore_range,
state
FROM customer
)
PIVOT (
COUNT(state) FOR state IN ('PA' AS pa, 'CA' AS ca, 'NY' AS ny, 'MD' AS md)
)
)
GROUP BY ROLLUP (creditscore_range);
Jeśli masz jakiekolwiek wyniki poniżej 500, oba będą zawierać linię dla osób z creditscore_range
jako null; co jest mylące z ROLLUP
wersja. Możesz odfiltrować wszelkie wyniki poniżej 500 z najbardziej wewnętrznego zapytania, ale znowu nie jest jasne, czy jest to konieczne lub pożądane.
Nie jestem jednak pewien, czy zadanie szuka, gdy mówi o rankingu. Oznacza to zmianę kolejności kolumn na podstawie zawartych w nich wartości. Ranking według stanu byłby bardziej sensowny, gdyby dane zostały przesunięte w drugą stronę.