0

我有一个结构为的表

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
4

1 回答 1

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:如何模仿oracle保持dense_rank查询?

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

于 2013-11-01T02:45:33.443 回答