关于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 的方法不能取具体第几条记录的数据
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语句取表里第n条记录的数据啊(用Delphi实现)