SQL查询取分组最大值

现有数据分类商品名称库存更新时间副食酱油102014.07.058:00:00副食酱油152014.07.0520:00:00副食罐头122014.07.05.9:00:... 现有数据
分类 商品名称 库存 更新时间

副食 酱油 10 2014.07.05 8:00:00
副食 酱油 15 2014.07.05 20:00:00
副食 罐头 12 2014.07.05.9:00:00
副食 罐头 20 2014.07.05.23:00:00

要做实时库存显示 按分类和商品名称分组 再取最后更新时间的那一条值
该如何写?
结果要
副食 酱油 15 2014.07.05 20:00:00
副食 罐头 20 2014.07.05.23:00:00
展开
 我来答
大野瘦子
高粉答主

推荐于2019-10-29 · 繁杂信息太多,你要学会辨别
知道小有建树答主
回答量:1227
采纳率:100%
帮助的人:34.4万
展开全部

select t1.分类,t1.商品名称,table.库存,t1.更新时间

from (

select 分类,商品名称,max(更新时间) 更新时间 from table

group by 分类,商品名称

) t1

inner join table on t1.分类=table.分类 and t1.商品名称=table.商品名称 and t1.更新时间

=table.更新时间

扩展资料:

关于SQL最大值查询语句的记录

SELECT

bsnum,

STATE AS FILE_STATE

FROM

FILE_RECORD r

WHERE

STATE =(

SELECT

MAX(STATE)

FROM

FILE_RECORD

WHERE

bsnum = r.bsnum

);

小技巧:有时需要测试sql语法但又觉得创建表麻烦,可以使用创建一个临时表,如下:

select id, count(t.id) from

(

select 1 as id, 2 as age, 'F' as sex from dual union

select 2 as id, 2 as age, 'M' as sex from dual union

select 3 as id, 3 as age, 'F' as sex from dual union

select 4 as id, 4 as age, 'M' as sex from dual 

)t

乐海白35
推荐于2019-10-14 · TA获得超过284个赞
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部

设存放现有数据的表名为“食品库”,答案如下:

SELECT A.分类,A.商品名称,B.库存,A.最大时间 

FROM

(SELECT 分类,商品名称,MAX(更新时间) as 最大时间 FROM 食品库 group by 分类,商品名称) as A

LEFT JOIN

(SELECT * FROM 食品库) as B ON A.分类 = B.分类 and A.商品名称 = B.商品名称 and A.最大时间 = B.更新时间

解题步骤如下:

1、把现有数据分组,取得组内最大更新时间。

这个结果和最终的目标只差“库存”字段。

2、再次查询食品库,获得库存数。

3确定以上两表的关联条件:

将第一步得到的结果集命名为A,第2步得到的结果集命名为B. 关联条件如下

4、运用LEFT JOIN将两表连接,得到最终结果。

left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的。换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录(例子中为:  A.分类 = B.分类 and A.商品名称 = B.商品名称 and A.最大时间 = B.更新时间)。B表记录不足的地方均为NULL。

参考资料:

百度百科.Left join

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-07-06
展开全部
select t1.分类,t1.商品名称,table.库存,t1.更新时间
from (
select 分类,商品名称,max(更新时间) 更新时间 from table
group by 分类,商品名称
) t1
inner join table on t1.分类=table.分类 and t1.商品名称=table.商品名称 and t1.更新时间=table.更新时间
追问
如果不用join有别的方法吗
追答
个人习惯这样写,目前没想到别的方法,你可以再问一下别人。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
汐日南莘
2015-11-07 · TA获得超过1.4万个赞
知道大有可为答主
回答量:1.6万
采纳率:45%
帮助的人:7584万
展开全部
sql 查询分组最大值
可以使用max 与group by组合使用达到目的
比如查询每个部门的最高工资

table
id departmentId salary
1 1 4500

2 2 5600
3 1 6000
4 2 5000
sql语句
select departmentId ,max(salary) salary from table group by departmentd;
结果
departmentId salary
1 6000
2 5600
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sun_visual
2014-07-06 · TA获得超过682个赞
知道小有建树答主
回答量:718
采纳率:66%
帮助的人:427万
展开全部
select 分类,商品名称, max(库存) as 库存,max(更新时间) as 更新时间
from table
group by 分类,商品名称;
追问
不能用max(库存)。。。最新时间的库存会减少的 去掉max就因为库存不同把全组数据都显示了 只要最新一条
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式