我有一张结构为
的表格Col1 =日期 Col2 = ID_Product Col3 =价格 Col4 = Units_Sold
我的表名是“tbl”
如果我想查找每个ID_Product的最大和最小日期,并找到Units_Sold> 0的价格变化,那么我是如何以有条理的“正确方式”执行此查询的
我现在的版本看起来很复杂,必须有更好的方法来做这样的事情。
这基本上就是我想做的事情,但它没有像我期望的那样表现:
select *
from
(select id,min(dt) as dt,fields from table where field>0 group by id,dt) as a
left join
(select id,max(dt) as dt,field from table where field>0 group by id,dt) as b
on a.id=b.id
答案 0 :(得分:0)
您可以使用ORDER BY和LIMIT执行此操作,或使用某种子查询查看SQL MAX()和MIN()函数。我将在第一种方式中提供一个非语言特定的示例,并引导您进入第二种方式的问题。
http://www.w3schools.com/sql/sql_func_max.asp
不确定您使用的是哪种语言:
for (products p)
{
pNewest = executeQuery("SELECT * FROM tbl ORDER BY date DESC LIMIT 1");
pOldest = executeQuery("SELECT * FROM tbl ORDER BY date ASC LIMIT 1");
double difference = Math.abs(pNewest["price"] - pOldest["price"]);
}
第二种方式: SQL Server: how to imitate oracle keep dense_rank query?