Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- create or replace function count_langs_employee(worker_name varchar)
- return number
- is
- counter number;
- begin
- select count(language)
- into counter
- from table_A
- where ename = worker_name;
- return counter;
- end;
- CREATE or replace type native_speaker as object(
- i VARCHAR(50)
- );
- create or replace type native_speakers as TABLE of native_speaker;
- create or replace function language_speakers(lang VARCHAR)
- return native_speakers as all_speakers native_speakers;
- begin
- select native_speaker(ename)
- bulk collect into all_speakers
- from table_A
- where language = lang;
- return all_speakers;
- end;
- create or replace function best_speaker(lang varchar)
- return varchar as best_speaker varchar(50);
- begin
- select listagg(i, ' ')
- into best_speaker
- from TABLE(language_speakers(lang))
- where count_langs_employee(i) = (select max(count_langs_employee(i)) from table(language_speakers(lang)));
- return best_speaker;
- end;
- select language, best_speaker(language) from table_A
- group by language
- order by length(best_speaker(language))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement