id user_id book_id pub_date
1 1001 1 2008-04-18
1 1001 2 2008-05-18
1 1001 2 2008-09-18
1 1001 1 2009-01-18
2 1001 1 2009-01-20
3 1001 2 2009-02-12
4 1001 3 2009-03-11
5 1001 4 2009-04-20
6 1001 5 2009-05-20
7 1001 6 2009-06-20
8 1001 7 2009-07-01 9 1002 1 2009-01-20
10 1002 2 2009-01-20
11 1002 3 2009-01-20
12 1002 3 2009-04-20
13 1002 5 2009-05-20
14 1002 6 2009-06-20
15 1002 7 2009-07-01 以每年的9月份到次年8月份為一個周期,如時當前查詢時間處於1月份到8月份之間,就是查詢去年9月份開始至當前月的記錄,如果當前查詢時間處於9月份到12月之間,就查詢本年9月份至當前月的記錄。 按月份統計每個用戶在一個月內買了哪幾本書,將書ID綜計出來,該如何處理,謝謝大家幫幫忙,小弟受教了!舉例:今天是2009年7月1號,所以查詢時間段應該為 pub_date between '2008-09-01' and '2009-07-01'我想要的統計結果為:user_id 9月份 10月份 11月份 12月份 1月份 2月份 3月份 4月份 5月份 6月份 7月份 8月份 1001 2 1 2 3 4 5 6 7 1002 1,2,3 3 5 6 7
1 1001 1 2008-04-18
1 1001 2 2008-05-18
1 1001 2 2008-09-18
1 1001 1 2009-01-18
2 1001 1 2009-01-20
3 1001 2 2009-02-12
4 1001 3 2009-03-11
5 1001 4 2009-04-20
6 1001 5 2009-05-20
7 1001 6 2009-06-20
8 1001 7 2009-07-01 9 1002 1 2009-01-20
10 1002 2 2009-01-20
11 1002 3 2009-01-20
12 1002 3 2009-04-20
13 1002 5 2009-05-20
14 1002 6 2009-06-20
15 1002 7 2009-07-01 以每年的9月份到次年8月份為一個周期,如時當前查詢時間處於1月份到8月份之間,就是查詢去年9月份開始至當前月的記錄,如果當前查詢時間處於9月份到12月之間,就查詢本年9月份至當前月的記錄。 按月份統計每個用戶在一個月內買了哪幾本書,將書ID綜計出來,該如何處理,謝謝大家幫幫忙,小弟受教了!舉例:今天是2009年7月1號,所以查詢時間段應該為 pub_date between '2008-09-01' and '2009-07-01'我想要的統計結果為:user_id 9月份 10月份 11月份 12月份 1月份 2月份 3月份 4月份 5月份 6月份 7月份 8月份 1001 2 1 2 3 4 5 6 7 1002 1,2,3 3 5 6 7
不知道POSTGRESQL是否有类似MYSQL的GROUP_CONCAT、ASA11的LIST函数,如果有则直接使用,如果没有,则用
SQL+SP来解决,其它的用静态SQL语句生成交叉表就OK了。
BEGIN
declare dd date;
set dd=date(dd1);
SELECT MAX(RQ) into @newendtime FROM (
select *
from `test`.ldbrq where nweek-6 <0 and rq between dd and dd +interval 10 day AND BZ IS NULL
UNION
select *
from `test`.ldbrq where nweek-6 <0 and rq>dd AND BZ IS NULL LIMIT 10) A1;
return cast(concat(@newendtime,' ',time(dd1)) as datetime);
END$$ DELIMITER ;