您现在的位置是:主页 > news > 东莞百度网站快速优化/线上电商怎么做

东莞百度网站快速优化/线上电商怎么做

admin2025/5/30 2:50:46news

简介东莞百度网站快速优化,线上电商怎么做,安徽合肥,房管局官网-- Start 假设现在有下面这个表用来存放股票的价格,我们需要保存一个月的历史记录。 CREATE TABLE price_history (security_id NUMBER(10, 0),price NUMBER(10, 4),price_date DATE,rank NUMBER(2, 0) );由于这个表的数据量非常大&…

东莞百度网站快速优化,线上电商怎么做,安徽合肥,房管局官网-- Start 假设现在有下面这个表用来存放股票的价格,我们需要保存一个月的历史记录。 CREATE TABLE price_history (security_id NUMBER(10, 0),price NUMBER(10, 4),price_date DATE,rank NUMBER(2, 0) );由于这个表的数据量非常大&…

-- Start

假设现在有下面这个表用来存放股票的价格,我们需要保存一个月的历史记录。

CREATE TABLE price_history
(security_id    NUMBER(10, 0),price          NUMBER(10, 4),price_date     DATE,rank           NUMBER(2, 0)
);

由于这个表的数据量非常大,导致我们想取最新的价格非常慢,于是我们有下面这个表存放最新价格。

CREATE TABLE price
(security_id    NUMBER(10, 0),price          NUMBER(10, 4)
);

现在问题来了,怎么把 price_history 的最新价格搞到 price 表里呢?也许你想说根据 price_date,但是 price_date 并不一定是当前日期,而且我们还需要根据 rank 排序,怎么办?实在不行,一条一条处理?来吧,是时候展现 Oracle 强大功能的时候了。

MERGE INTO price p
USING (SELECT security_id, price FROM (SELECTROW_NUMBER() OVER(PARTITION BY security_id ORDER BY price_date DESC, rank DESC) AS ROW_ID,security_id,priceFROMprice_history) WHERE ROW_ID = 1
) ph
ON (p.security_id = ph.security_id)  
WHEN MATCHED THEN UPDATE SET p.price = ph.price
WHEN NOT MATCHED THEN INSERT VALUES (ph.security_id, ph.price);

怎么样?没看懂?点击此处查看更多详情  Oracle merge 语句Oracle 分析函数


--更多参见:Oracle SQL 精萃

-- 声明:转载请注明出处

-- Last edited on 2015-02-14

-- Created by ShangBo on 2015-02-14

-- End