時間:2024-02-05 11:03作者:下載吧人氣:18
你有沒有碰到過有這樣一種場景,就是我們需要看一下某個時間段內各種維度的匯總,比如這樣:最近三年我們賣了多少貨?有多少訂單?平均交易價格多少?每個店鋪賣了多少?交易成功的訂單有多少?交易失敗的訂單有多少? 等等…,假使這些數據的明細都在一個表內,該這么做呢? 有沒有簡單方式?還有如何減少全表掃描以更改的拿到數據?
如果只是簡單的利用聚合拿到數據可能您需要寫很多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" -- 產品名稱 );
網友評論