2012-03-15 55 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'值返回这个查询可能会低于原始问题中的查询。 – 2012-03-15 11:14:34

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

尝试:

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