关于SQL多类别汇总取最大值的实现

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于SQL多类别汇总取最大值的实现相关的知识,希望对你有一定的参考价值。

参考技术A 销售明细按站名、各大类中的销售收入最高的商品进行汇总。想了半天 可以用如下SQL实现:

select a.便利店名称,a.商品品类描述,round(a.销售收入max,2) as 收入,b.商品名称 from

(

select 便利店名称, 商品品类描述, max(销售收入base) as 销售收入max from

(

SELECT 便利店名称, 商品品类描述, 商品名称, sum(销售收入) AS 销售收入base FROM usmile GROUP BY 便利店名称, 商品品类描述, 商品名称 HAVING sum(销售收入)>0

) base

GROUP BY 便利店名称, 商品品类描述

) a,

(

select 便利店名称, 商品名称, max(销售收入base) as 销售收入max from

(

SELECT 便利店名称, 商品品类描述, 商品名称, sum(销售收入) AS 销售收入base FROM usmile GROUP BY 便利店名称, 商品品类描述, 商品名称 HAVING sum(销售收入)>0

) base

GROUP BY 便利店名称, 商品名称

) b

where a.便利店名称=b.便利店名称 and a.销售收入max=b.销售收入max

怎样用sql语句取表里第n条记录的数据啊(用Delphi实现)

谢谢大家的回答
是Access数据库
xuyucheng26 的方法不能取具体第几条记录的数据

设置 str 为字符串变量
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add("SELECT * FROM 表名");
ADOQuery1.Open;
While ADOQuery1.Eof
begin
str:=ADOQuery1.FieldByName('字段名称').AsString;
ADOQuery1.Next;
end;
取具体第几条记录的数据:
记录数 n :=ADOQuery1.RecordCount;
在 While 中加你指定的条件即可.
参考技术A 这个好办,我们假定从Table的表中取第n条记录,同时假定表TableA的内码为:Internalid,则可得出如下查询
Select top n from TableA where Internalid not in (Select top n-1 from tableA)
参考技术B 要看是什么数据库,oracle可用rownum比较简单。

以上是关于关于SQL多类别汇总取最大值的实现的主要内容,如果未能解决你的问题,请参考以下文章

SQL查询取分组最大值

SQL如何按条件取唯一值?

SQL中如何取多列的最大值?

怎样用sql语句取表里第n条记录的数据啊(用Delphi实现)

mssql 2005查询 请问我要实现分组获取最大值,怎么写sql查询指令

oracle 查询最大值