亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 1516 | 回復: 3
打印 上一主題 下一主題

求助一段SQL文 [復制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2006-04-25 17:38 |只看該作者 |倒序瀏覽
現(xiàn)有兩張表:

一張表
member_regist_table:
user_id         varchar(64)
service_id     int
carrier           int
regist_date   timestamp

另一張表
member_unregist_log:
user_id              varchar(64)
service_id          int
carrier_id           int
regist_date        timestamp
unregist_date    timestamp

我現(xiàn)在想根據(jù)一個時間范圍:如2006年1月1號 ----  2006年1月8號
查詢以下信息,該怎么寫sql語句,謝謝!
時間              會員數(shù)        退會數(shù)       增減數(shù)      有效數(shù)       入會總數(shù)
20060101           10          5            5          5               10
20060102            7           5            2          7               17
20060103           22          8            14        21             39
20060104           17          2            15        36             56
20060105           24          6            18        54             80
20060106           19          5            14        68             99
20060107            3          22          -19        58            102
20060107           32         14           -17       75            134

其中:會員數(shù)為這段時間范圍內(nèi)兩張表的user_id之和(member_unregist_log的regist_date字段在時間范圍內(nèi)即可)
退會數(shù)為該段時間范圍內(nèi)member_unregist_log里的退會user_id數(shù)(unregist_date字段在時間范圍內(nèi)即可)
增減數(shù)為  會員數(shù) -   退會數(shù)
有效數(shù)為member_regist_table里_date字段在時間范圍內(nèi)的user_id數(shù)
入會總數(shù)為 昨天入會總數(shù)+今天的會員數(shù)  (假定紀錄前一天的入會總數(shù)為0)


哎!描述了半天,希望大家能夠明白,也不辜負我寫了這么都!

論壇徽章:
0
2 [報告]
發(fā)表于 2006-04-26 11:23 |只看該作者

回復 1樓 luol_001 的帖子

數(shù)好說,大不了多個結(jié)果集拼唄。只是這個時間按日遞增不大好作吧,建議用程序循環(huán)查每一天的數(shù)量。即程序計算像隔多少天,每次只查一天的。
關(guān)注中

論壇徽章:
0
3 [報告]
發(fā)表于 2006-04-26 11:45 |只看該作者
提示: 作者被禁止或刪除 內(nèi)容自動屏蔽

論壇徽章:
0
4 [報告]
發(fā)表于 2006-04-26 19:39 |只看該作者
不過我寫了個巨呆的一個:
SELECT
        DISTINCT to_char(mem_reg.regist_date,'yyyymmdd') AS date,
         ((
                SELECT
                        COUNT(*)
                FROM
                        member_regist_table AS regist
                WHERE
                        regist.service_id = 1 and
                        regist.carrier_id = 1 and
                        to_char(regist.regist_date,'yyyymmdd') = to_char(mem_reg.regist_date,'yyyymmdd')
         ) +
         (
                SELECT
                        COUNT(*)
                FROM
                        member_unregist_log AS unregist
                WHERE
                        unregist.service_id = 1 and
                        unregist.carrier_id = 1 and
                        to_char(unregist.regist_date,'yyyymmdd') = to_char(mem_reg.regist_date,'yyyymmdd')
         )) AS regist,
        (        SELECT
                        COUNT(*)
                FROM
                        member_unregist_log AS unregist
                WHERE
                        unregist.service_id = 1 and
                        unregist.carrier_id = 1 and
                        to_char(unregist.regist_date,'yyyymmdd') = to_char(mem_reg.regist_date,'yyyymmdd')
        ) AS unregist,
         ((
                SELECT
                        COUNT(*)
                FROM
                        member_regist_table AS regist
                WHERE
                        regist.service_id = 1 and
                        regist.carrier_id = 1 and
                        to_char(regist.regist_date,'yyyymmdd') = to_char(mem_reg.regist_date,'yyyymmdd')
         ) +
         (
                SELECT
                        COUNT(*)
                FROM
                        member_unregist_log AS unregist
                WHERE
                        unregist.service_id = 1 and
                        unregist.carrier_id = 1 and
                        to_char(unregist.regist_date,'yyyymmdd') = to_char(mem_reg.regist_date,'yyyymmdd')
         ) -
         (
                SELECT
                        COUNT(*)
                FROM
                        member_unregist_log AS unregist
                WHERE
                        unregist.service_id = 1 and
                        unregist.carrier_id = 1 and
                        to_char(unregist.regist_date,'yyyymmdd') = to_char(mem_reg.regist_date,'yyyymmdd')
         )) AS change,
        ((
                SELECT
                        COUNT(*)
                FROM
                        member_regist_table AS regist
                WHERE
                        regist.service_id = 1 and
                        regist.carrier_id = 1 and
                        to_char(regist.regist_date,'yyyymmdd') <= to_char(mem_reg.regist_date,'yyyymmdd')
        ) +
        ((
                SELECT
                        COUNT(*)
                FROM
                        member_unregist_log AS unregist
                WHERE
                        unregist.service_id = 1 and
                        unregist.carrier_id = 1 and
                        to_char(unregist.regist_date,'yyyymmdd') <= to_char(mem_reg.regist_date,'yyyymmdd')
        ) -
        (
                SELECT
                        COUNT(*)
                FROM
                        member_unregist_log AS unregist
                WHERE
                        unregist.service_id = 1 and
                        unregist.carrier_id = 1 and
                        to_char(unregist.unregist_date,'yyyymmdd') <= to_char(mem_reg.regist_date,'yyyymmdd')        
        ))) as validator,
        ((
                SELECT
                        COUNT(*)
                FROM
                        member_regist_table AS regist
                WHERE
                        regist.service_id = 1 and
                        regist.carrier_id = 1 and
                        to_char(regist.regist_date,'yyyymmdd') <= to_char(mem_reg.regist_date,'yyyymmdd')        
        ) +
        (
                SELECT
                        COUNT(*)
                FROM
                        member_unregist_log AS unregist
                WHERE
                        unregist.service_id = 1 and
                        unregist.carrier_id = 1 and
                        to_char(unregist.regist_date,'yyyymmdd') <= to_char(mem_reg.regist_date,'yyyymmdd')        
        )) AS total
FROM
        member_regist_table as mem_reg
WHERE
            to_char(mem_reg.regist_date,'yyyymmdd') <= '20060406'
        AND to_char(mem_reg.regist_date,'yyyymmdd') >= '20060401'
ORDER BY
        to_char(mem_reg.regist_date,'yyyymmdd') ASC

功能可以實現(xiàn),就是比較傻一點
不知道有沒有更好的辦法!
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP