时间:2024-02-05 11:03作者:下载吧人气:21
你有没有碰到过有这样一种场景,就是我们需要看一下某个时间段内各种维度的汇总,比如这样:最近三年我们卖了多少货?有多少订单?平均交易价格多少?每个店铺卖了多少?交易成功的订单有多少?交易失败的订单有多少? 等等…,假使这些数据的明细都在一个表内,该这么做呢? 有没有简单方式?还有如何减少全表扫描以更改的拿到数据?
如果只是简单的利用聚合拿到数据可能您需要写很多sql,具体表现为每一个问题写一段sql 相互之间join起来,这样也许是个好主意,不过对于未充分优化的数据库系统,针对每一块的问题求解可能就是一个巨大的表扫描,当然还有一个问题就是重复的where
条件,所以能不能把相同的where
条件抽取出来以简化sql呢?让我们思考一下,也许有这样的解决办法~ (结论是有,当然有,哈哈哈~)
首先我提供下基本的表结构及测试数据
基本表结构
CREATE TABLE "order_info" ( "id" numeric(22) primary key , "oid" varchar(100) COLLATE "pg_catalog"."default", -- 订单号 "shop" varchar(100) COLLATE "pg_catalog"."default", -- 店铺 "date" date NOT NULL, --订单日期 "status" varchar(100) COLLATE "pg_catalog"."default", -- 订单状态 "payment" numeric(18,2), -- 交易支付金额 "product" varchar(100) COLLATE "pg_catalog"."default" -- 产品名称 );
网友评论