Re: [SQL ] ID歸戶後再累計如何進行?
※ 引述《SGMitchi14 (永不放棄)》之銘言:
: (針對 SQL 語言的問題,用這個標題。請用 Ctrl+Y 砍掉這行)
: 資料庫名稱:oracle SQL Developer
: 資料庫版本:1.5.5
: 內容/問題描述:
: 各位資料庫先進好,小弟是資料庫新手,自行看書並實際操作學習,
: 最近遇到幾個棘手的問題,再懇請先進們指教,謝謝。
: 問題一:資料庫欄位含月份、ID,我想要計算ID歸戶後再累計
: 例如1月:1月同ID的人數
: 2月:1-2月中,同ID的人數【意即1-2月只要出現1次就只算1次】
: .
: .
: 6月:1-6月中,同ID的人數
: 以此類推...
: 所以可能產生的結果:
: 1月:3000人
: 2月:3500人【單獨只看2月也是3000人,但有500人是2月才出現,1月沒有出現過】
: 3月:4000人【單獨只看3月也是3000人,但有500人是3月才出現,1-2月沒有出現過】
: 請問這樣有什麼方式可以解決嗎?
我看起來應該是在問去重複的問題:
declare
V_MONTH int;
V_COUNT int;
V_RESULT int;
begin
V_COUNT := 0;
--不知道你月份什麼格式 就先用yyyymm
V_MONTH := TO_CHAR(ADD_MONTHS(trunc(SYSDATE, 'yyyy'), + V_COUNT), 'yyyymm');
while V_MONTH <= TO_CHAR(SYSDATE, 'yyyymm') loop
select count(distinct ID) into V_RESULT
from table
where 月份 >= trunc(SYSDATE, 'yyyymm') --今年
and 月份 <= V_MONTH
;
-- 看結果,檢視(V)打開下面有個DBMS輸出,綠十字選取連線。
DBMS_OUTPUT.PUT_LINE(V_MONTH || ' ' || V_COUNT || ' ' || V_RESULT);
V_COUNT := V_COUNT + 1;
V_MONTH := TO_CHAR(ADD_MONTHS(trunc(SYSDATE, 'yyyy'), + V_COUNT), 'yyyymm');
commit;
end loop;
end;
: 問題二:我有一段語法,裡面有3段子查詢進行join,跑出來的筆數約80萬筆
: 執行時間約1分鐘,但要針對上述語法求每人每月的最大值
: 一直都跑不出來,試過跑了25分鐘還是跑不出來
: 請問有什麼部分需要注意呢?
: 以上問題,再懇請先進們指教,謝謝
要嘛條件寫錯,要嘛沒index在table scan,若還有其他狀況就by case了。
--
大哥不要說二哥 打落塵埃 這是要逆天的節奏阿 牛不飲水強按頭 不負如來不負卿 腳盆國
好言難勸該死的鬼 時來天地皆同力 運去英雄不自由 屠龍者終將成為惡龍 一劍破萬法 給
我破 給我開 生當做人傑 死亦為鬼雄 你不裝逼會死嗎 霓虹國 一力降十會 待我長髮及腰
天不生我*** **萬古如長夜 人生不如意十之** 東躲XC 開弓沒有回頭箭 冤仇要結就結到底
心之所向 素履以往 天下風雲出我輩 一入江湖歲月催 皇圖霸業談笑中 不勝人生一場醉
得之我幸 失之我命 閻王好見小鬼難纏 仗義每多屠狗輩 一隻穿雲箭 不拿一針一線 漂亮國
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.130.162.85 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Database/M.1668759613.A.EC8.html
推
11/20 01:20,
2年前
, 1F
11/20 01:20, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
Database 近期熱門文章
PTT數位生活區 即時熱門文章