2012-03-15 2 views
1

У меня есть запрос, как это:retriving все строки с максимальным значением

SELECT state AS ls,count(*) AS total, max(sales) AS ye FROM TABLE 
GROUP BY state 

Тогда я получаю следующий результат:

A total ye 
---------- 
a 22 23 
b 23 23 
c 24 21 
d 25 21 

Но я хочу, чтобы отобразить только состояние, имеющий максимальное значение ye, то есть:

A total ye 
---------- 
a 22 23 
b 23 23 

ответ

2
select state as ls,count(*) as total ,max(sales) as ye from table  
where sales = (select max(sales) from table) 
group by state 
+0

Параметр 'COUNT (*) в качестве total' возвращаемых значений для этот запрос, вероятно, будет ниже, чем в исходном вопросе. –

4

Вы можете использовать пункт HAVING для этого, это похоже на WHERE Только он выполняется после получения всех данных. Вы можете указать его после того, как группе, как:

select state as ls,count(*) as total ,max(sales) as ye from table  
group by state 
having count(*) = max(sales) 
1

Попробуйте этот запрос:

select * from (select state as ls,count(*) as total ,max(sales) as ye from table  
group by state)temp HAVING max(ye); 
3

Try:

select state as ls,count(*) as total, max(sales) as ye from table  
group by state 
having max(sales) = (select max(sales) from table) 
Смежные вопросы