Как выбрать максимальную числовую базу на основе значения другого атрибута? - PullRequest
0 голосов
/ 17 апреля 2019

У меня есть таблица с 3 столбцами, которая представляет собой «year», «Students_count» и «Faculty».И я хочу выяснить, какое наибольшее количество «Students_count» для каждого факультета.

Таблица выглядит следующим образом:

year| students_count| faculty
------------------------------------
2001| 50            | Business
2002| 60            | Business
2003| 40            | Business
2001| 20            | Engineering
2002| 10            | Engineering
2003| 50            | Law
SELECT year,max(students_count),faculty FROM table;

(не работает)

year| students_count| faculty
-----------------------------------
2002| 60            | Business
2001| 20            | Engineering
2003| 50            | Law

Ответы [ 5 ]

1 голос
/ 17 апреля 2019

использование row_number()

select * from
(
select *,row_number() over(partition by faculty order by students_count desc) as rn
from tablename 
)A where rn=1
0 голосов
/ 17 апреля 2019

Для этого, я думаю, вам просто нужно использовать group by в вашем sql. Это может решить эту проблему.

Create Table School(
Year Number(4),
Students_Count Number(2),
Faculty Varchar2(20)
);

Insert Into School  Values (2001,50,'Business');
Insert Into School  Values (2002,60,'Business');
Insert Into School  Values (2003,40,'Business');
Insert Into School  Values (2001,20,'Engineering');
Insert Into School  Values (2002,10,'Engineering');
Insert Into School  Values (2003,50,'Law');

Select * From School;

Select  Faculty,Max(Students_Count) From School
Group By Faculty;
0 голосов
/ 17 апреля 2019

это будет делать:

select * from (select *,rank() over (partition by faculty order by sytudents_count desc 
) rnk form tablename) where rnk=1;
0 голосов
/ 17 апреля 2019

Вы хотите dense_rank():

select t.*
from (select t.*,
             dense_Rank() over (partition by faculty order by students_count desc) as seq
      from table t
     ) t
where seq = 1;
0 голосов
/ 17 апреля 2019

нужно группировать, если вам нужно в год, и факультет мудрый максимум

SELECT year,max(students_count),faculty FROM table group by year,faculty

но если вам нужен только факультет, вы можете использовать подзапрос

select top (1) with ties t.*
from table_name t
order by row_number() over (partition by faculty order by students_count   desc)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...