2 cool0532 cool0532 于 2017.09.19 10:16 提问

求个sql语句,具体如下

mysql数据库
产品价格表 price,
字段:id, productid, price, pricedate
表里存的是多个产品在不同时间的价格,
比如产品p1,
1 p1 203.00 2017-08-21
2 p1 251.00 2017-08-30

希望写出一个sql,可以按照报价日期降序排列,每个产品取7条数据
也就是每个产品取最新的七条价格

11个回答

jtrsreumf
jtrsreumf   2017.09.19 10:43

select * from price order by pricedate desc limit 0,7;

jtrsreumf
jtrsreumf select * from price a where instr( (select GROUP_CONCAT(b.ids) from (select SUBSTRING_INDEX(GROUP_CONCAT(p.id order by p.pricedate desc),',',7) as ids from price p group by p.productid) b) , a.id)>0
10 个月之前 回复
jtrsreumf
jtrsreumf 前面没看清。
10 个月之前 回复
kingslave1
kingslave1 他是要分产品的呀,你这样只是查出最新的7条数据吧
10 个月之前 回复
u011924665
u011924665   2017.09.19 10:37

select productid,price from (select productid,price,row_number() over(partition by productid order by price) rownumb from price) whre rownumb<=7

Oh_my_godness
Oh_my_godness   2017.09.19 10:41

mysql数据库 进行操作!!!直接先查询全部的在排序,最后进行分页查询
SELECT * FROM tableName ORDER BY 排序的字段 LIMIT 分页起始页码,每页显示多少条
比如SELECT * FROM test ORDER BY pricedate LIMIT 0,7

Oh_my_godness
Oh_my_godness   2017.09.19 10:43

显示什么字段在最前面写什么字段就可以

m0_37462976
m0_37462976   2017.09.19 10:55

考虑两点:
1.前七条
2.每个产品---->说明产品不能重复的
select distanct(r.id ,r.productid,r.price,r.pricedate) from price r desc limit 0,6;

weixin_38177163
weixin_38177163   2017.09.19 11:23

select * from (select productid,pricedate,row_number() over (partition by productid order by pricedate desc) num from price)t where t.num<=7

qq_28546593
qq_28546593   2017.09.19 11:25

SELECT
productid,
price
FROM
(
SELECT
productid,
price,
row_number () over (
PARTITION BY productid
ORDER BY
price
) rownumb
FROM
price
) whre rownumb <= 7

jtrsreumf
jtrsreumf   2017.09.19 16:17

重新回复一下:
select * from price a where instr(
(select GROUP_CONCAT(b.ids) from
(select SUBSTRING_INDEX(GROUP_CONCAT(p.id order by p.pricedate desc),',',7) as ids from price p group by p.productid) b)
, a.id)>0

guanfengliang1988
guanfengliang1988   2017.09.19 16:26

SELECT * FROM price a

WHERE (SELECT count(*) FROM price b WHERE b.productid=a.productid AND b.id>a.id )<7

ORDER BY pricedate desc

jtrsreumf
jtrsreumf   2017.09.19 16:26

这种也可以
select a.* from price a,
(select s.productid,SUBSTRING_INDEX(GROUP_CONCAT(p.id order by p.pricedate desc),',',7) as ids from price p group by p.productid) b
where a.productid = b.productid and instr(b.ids, a.id)>0

cool0532
cool0532 SELECT * FROM w_price wp WHERE 3 > ( SELECT COUNT(*) FROM w_price WHERE productid = wp.productid AND pricedate > wp.pricedate ) ORDER BY wp.productid ASC, wp.pricedate DESC
9 个月之前 回复
共11条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
2012年4月7日腾讯实习生笔试中的一道数据库题目
如下SQL语句是需要列出一个论坛版面第一页(每页显示20个)的帖子(post)标题(title),并按照发布(create_time)降序排列: SELECT title FROM post(      )create_time DESC(          )0,20      答案:order by       limit      注:SQLServer中不支持limit,可以用to
一条SQL语句求全年平均值
一年有8760个小时!(才这么点。。。)
PL/SQL 语句块详细解说
PL/SQL语言作用:如果不使用PL/SQL语言,oracle一次只能处理一条SQL语句。每条SQL语句都导致客户(client)向服务器(server)调用,从而在性能上产生很大的开销,尤其是在网络操作中。如果使用PL/SQL,一个块中的语句作为一个组,导致客户向服务器的一次调用,减少网络转输PL/SQL块结构与用途一个基本的PL/SQL块由三部分组成:定义部分、可执行部分以及例外处理
求学生选课平均成绩的SQL语句
有一个student表,共有三列,第一列为学生id列,存储选课的学生id,可以重复,即允许一个学生选多门课。 第二列为course列,即选课的课程名。 第三列为score列 ,即学生的成绩。 student表中有以下数据: 则,计算学生选课平均成绩的SQL语句如下: SELECT id, AVG(score) FROM student GROUP BY id; 用AVG函数求s
使用 SQL 语句创建 School 数据库(包括参数)、 TblClass 表、 TblStudent 表。 并向其中填入数据。
使用 SQL 语句创建 School 数据库(包括参数)、 TblClass 表、 TblStudent 表。 并向其中填入数据。 创建 School 数据库(包括参数) create database School on primary ( name='School', filename='F:\SQL Server\School.mdf', size=10mb, fil
腾讯2013实习生笔试题+答案
一、 单项选择题 1) 给定3个int类型的正整数x,y,z,对如下4组表达式判断正确的选项() Int a1=x+y-z; int b1=x*y/z; Int a2=x-z+y; int b2=x/z*y; Int c1=x Int c2=x>>z A) a1一定等于a2 B) b1一定定于b2 C) c1一定等于c2 D) d1一定等于d2 2) 程序的完整编译过程分为
sql语句总结具体介绍优化
sql语句总结具体介绍优化sql语句总结具体介绍优化sql语句总结具体介绍优化
用SQL语句创建数据库和表
--------创建数据库 ----use master ----GO ----IF EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = 'test1') ----DROP DATABASE test1 ----GO ----CREATE DATABASE test1 ------创建教师表 --use test1 --
求SQL语句
求SQL语句,请看附件
题目1137:浮点数加法 九度OJ
题目1137:浮点数加法 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:3916 解决:1048 题目描述: 求2个浮点数相加的和 题目中输入输出中出现浮点数都有如下的形式: P1P2...Pi.Q1Q2...Qj 对于整数部分,P1P2...Pi是一个非负整数 对于小数部分,Qj不等于0 输入: 对于每