[SQL] Sortowanie i zliczanie wg alfabetu

0

Jak wyświetlić w kolejności malejącej kolejne litery alfabetu i liczbe osób, których nazwisko zaczyna sie na dana literę?

Zadanie ma być zrobione niby w SQLu, ale propozycje w PL/SQLu też mile widziane. Jeśli ktoś ma pomysł jak to zrobić, to proszę o podanie go. Będę wdzięczna za każdą pomoc. ;)

0
CREATE TABLE nazwiska (
 nazw VARCHAR2(50)
);

BEGIN
 INSERT INTO nazwiska VALUES('Kowalski');
 INSERT INTO nazwiska VALUES('Kozłowska');
 INSERT INTO nazwiska VALUES('Nowak');
 INSERT INTO nazwiska VALUES('Zieliński');
 INSERT INTO nazwiska VALUES('Borowski');
 INSERT INTO nazwiska VALUES('Borkowska');
 INSERT INTO nazwiska VALUES('Malinowski');
 INSERT INTO nazwiska VALUES('Wielicki');
 INSERT INTO nazwiska VALUES('Dziedzic');
END;

SELECT UPPER(SUBSTR(nazw, 1, 1)) AS lit, COUNT(*) AS liczba
FROM nazwiska
GROUP BY UPPER(SUBSTR(nazw, 1, 1))
ORDER BY UPPER(SUBSTR(nazw, 1, 1)) DESC;

Jeżeli nie o to chodziło opisz problem dokładniej.

0

Dzięki za odpowiedź. ;) Problem w tym, że właśnie mam tylko to polecenie, więc sama więcej nic nie wiem, a dla mnie też jest ono trochę niejasne. Kombinowałam podobnie jak Ty w przykładzie powyżej. Wysoce prawdopodobne, że właśnie o to chodziło. Zastanawiałam się tylko czy może istnieje jakaś możliwość by wyświetlić cały alfabet, czyli A,B,C... i w przypadku, gdy w tabelce z nazwiskami nie ma żadnej osoby o nazwisku zaczynającym się na A wyświetlałoby w drugiej kolumnie 0. :|

0
SELECT L.Literka, COUNT(*) AS liczba
FROM nazwiska As N
RIGHT JOIN (SELECT 'A' As Literka UNION SELECT 'B' UNION SELECT ...) As L
ON N.UPPER(SUBSTR(nazw, 1, 1))=L.Literka
GROUP BY UPPER(SUBSTR(nazw, 1, 1))
ORDER BY UPPER(SUBSTR(nazw, 1, 1)) DESC;

pozdrawiaMM

0

Dzięki za pomoc. ;-) Choć właściwie nie bardzo mi to działa. Czepia się przy FROM nazwiska AS N, że komenda jest źle zakończona. Problem rozwiązuje pozbycie się AS, bo alias i tak się tworzy. Niestety wtedy zaczyna domagać się przy SELECT 'A' As Literka UNION... klauzuli FROM przed UNION, a tego nie wiem już jak rozwiązać, bo nie bardzo orientuje się w łączeniu tabel. :-/ Jakieś sugestie?...

0

Napisz jaka baza, bo każda ma inaczej z aliasami. Czasem trzeba, czasem nie można, czasem z AS a czasem bez...

pozdrawiaMM

0

Oracle 10g Express Edition ;]

0

Proponuję najpierw ustalić jak to ma działać i co chcesz osiągnąć, a wtedy zająć się implementacją.

1 użytkowników online, w tym zalogowanych: 0, gości: 1