查找最大/最小天数并获得某些列的第一个差异

时间:2013-11-01 02:23:30

标签: mysql

我有一张结构为

的表格

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

1 个答案:

答案 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?

http://www.w3schools.com/sql/sql_func_max.asp