Redian新闻
>
Entry-Level Assistant Actuarial Analyst
avatar
Entry-Level Assistant Actuarial Analyst# Actuary - 精算
w*6
1
我公司从事国际贸易业务,面向海外市场,从事网络销售多年,具有完善的经营模式以及
畅销市场的优质
商品.从近年的销售情况来看,顾客对产品的反馈好,为扩大销售量,本公司现招国外
的朋友合作,为
广大的海外学子,华人提供最快捷的发展平台,现在本公司为您已经搭建好最快捷的电
子商务平台,您
只需要在网上注册店铺(免费的)后,并将商品图片(由我方提供)上传,只需投资您的
业余时间就可以
免费的让您轻松的当老板,无风险,无投资,高收入,轻松创造自己创业的第一桶金~
合作要求:
1. 具备你所在国家的语言,或者会英语。
2. 每天利用业余时间1-2个小时回复顾客邮件,订单转接。
3. 工作简单 时间灵活 工作地点自由是海外同胞兼职的最佳选择。
4. 无论你从事哪个行业都没关系只要你有业余时间做这个就OK.不需占用太多时间!
有意者请联系我详谈
联系方式:
QQ:474158253
msn:p********[email protected]
EMAIL: p********[email protected]
avatar
n*7
2
悬疑侦破片。讲多个离奇谋杀案的。
avatar
c*n
3
上学时候上过这个课, 现在重新pick up 以前的一些paper 看, 找不到人讨论。。。
Chandra Tushar 的failure detector 分类,
<>W (eventually weak) 可以用来solve async consensus,
但是他这个说的async consensus 跟FLP 讲的不一样, FLP 是最多一个fail stop
failure, 他的可以tolerate majority failure.
就是说最后他给的那个classification , 在RB 和async consensus 圆圈之间,
应该还有一类, 就是FLP 的single failure async model, 这个model 比Chandra 的问
题更容易, 应该可以用更weak 的failure detector 来解, 但是<>W 已经是最weak
的了,
这个model 有人研究么?
avatar
l*n
4
MySQL下有表格:
CustomerID OrderDate
101 2014-12-11
102 2014-12-13
101 2014-12-14
103 2014-12-15
... ...
如果想找出m天内下了超过k次单的顾客,能不能不用sub query实现?
avatar
b*y
5
从 Acturary Resource收到一个面试邀请,本人是统计小硕,没有考过任何精算考试。
请问各位大虾:
1。这应该是staffing公司的面试吧?在外州,如果没有交通住宿自费,有必要去吗?
2。这个职位没有通过考试之前是不是收入很低,一般要通过几门考试以后才会比较好?
多谢
avatar
g*o
6
卖什么东西啊
avatar
r*y
7
情节应该是抄日本人的,中国自己的凶手好像普遍没有那么变态。

【在 n******7 的大作中提到】
: 悬疑侦破片。讲多个离奇谋杀案的。
avatar
w*n
8
select custid
from yourtable
where sysdate-orderdate》m
group by custid
having count(custid)》k
tested in oracle

【在 l**n 的大作中提到】
: MySQL下有表格:
: CustomerID OrderDate
: 101 2014-12-11
: 102 2014-12-13
: 101 2014-12-14
: 103 2014-12-15
: ... ...
: 如果想找出m天内下了超过k次单的顾客,能不能不用sub query实现?

avatar
o*y
9
没听说过这个公司,如果没有任何考试还要面试你的话,多半不是精算职位而是统计职
位,那工资跟考试就没什么关系

好?

【在 b*****y 的大作中提到】
: 从 Acturary Resource收到一个面试邀请,本人是统计小硕,没有考过任何精算考试。
: 请问各位大虾:
: 1。这应该是staffing公司的面试吧?在外州,如果没有交通住宿自费,有必要去吗?
: 2。这个职位没有通过考试之前是不是收入很低,一般要通过几门考试以后才会比较好?
: 多谢

avatar
c*r
10
好像说是完全抄金田一事件簿的。不过我看金田一看的不太仔细,所以还挺喜欢
深瞳的,呵呵。

【在 r*****y 的大作中提到】
: 情节应该是抄日本人的,中国自己的凶手好像普遍没有那么变态。
avatar
s*o
11
对的,如果这个简单的问题都不会,SQL基本就不怎么懂
还可以用PARTITION BY进行RANK,由高到低

【在 w****n 的大作中提到】
: select custid
: from yourtable
: where sysdate-orderdate》m
: group by custid
: having count(custid)》k
: tested in oracle

avatar
n*7
12
片尾曲好听。
avatar
l*n
13
不是最近10天,是任何10天内

【在 w****n 的大作中提到】
: select custid
: from yourtable
: where sysdate-orderdate》m
: group by custid
: having count(custid)》k
: tested in oracle

avatar
z*o
14
老片了

【在 n******7 的大作中提到】
: 悬疑侦破片。讲多个离奇谋杀案的。
avatar
l*n
15
有可能我没说清楚,不是最近10天,而是任何10天内
如果是最近10天内,那么这个很简单

【在 s**********o 的大作中提到】
: 对的,如果这个简单的问题都不会,SQL基本就不怎么懂
: 还可以用PARTITION BY进行RANK,由高到低

avatar
l*y
16
壮着胆子看第一集,那个老太太趴窗户上偷看的镜头吓了我一跳,再不敢看了。。。
其实最喜欢这种侦探悬疑了,不过这个搞得有点恐怖
avatar
m*u
17
LZ是个女的。既然都更新了,何不更准确点:应该是任意连续的m天。不是最近10天,
也不是任意10天,而是任意连续的10天。
是不太好做。哪位大拿做出来,请贴上来。
发信人: lvin (snake~), 信区: Database
标 题: Re: 请教:找出10天内下了超过5次单的customers
发信站: BBS 未名空间站 (Tue Oct 6 15:39:33 2015, 美东)
有可能我没说清楚,不是最近10天,而是任何10天内
如果是最近10天内,那么这个很简单
avatar
m*u
18
要用到循环或cursors么?
avatar
B*g
19
方法一 selfjoin, join 10天之内的,然后count >=5。
方法二 partition by (LAG),找前面第5个,看时间是不是差是不是小于10天
由于机器人的要求是mysql,所以方法二不能使用
avatar
c*d
20
beijing说:任何语句都可以用partition实现
coolbid说:任何subquery都可以用join实现

【在 m******u 的大作中提到】
: LZ是个女的。既然都更新了,何不更准确点:应该是任意连续的m天。不是最近10天,
: 也不是任意10天,而是任意连续的10天。
: 是不太好做。哪位大拿做出来,请贴上来。
: 发信人: lvin (snake~), 信区: Database
: 标 题: Re: 请教:找出10天内下了超过5次单的customers
: 发信站: BBS 未名空间站 (Tue Oct 6 15:39:33 2015, 美东)
: 有可能我没说清楚,不是最近10天,而是任何10天内
: 如果是最近10天内,那么这个很简单

avatar
B*g
21
ding
再加一句,在mysql上还玩复杂sql的都是耍流氓

【在 c*****d 的大作中提到】
: beijing说:任何语句都可以用partition实现
: coolbid说:任何subquery都可以用join实现

avatar
c*d
22
select o1.CustomerID , COUNT(*)
from orders o1 join orders o2
on o1.CustomerID = o2.CustomerID
where o1. OrderDate > o2. OrderDate
and o1. OrderDate < o2. OrderDate+ 10
group by o1.CustomerID
having COUNT(*) > 5;
avatar
m*u
23
不是任意subquery都能用join实现的。
avatar
m*u
24
是不是要distinct一下。不然会重复选出一些customerid吧。select list 中的count
(*)可以去掉。
发信人: coolbid (Dreams bring hopes), 信区: Database
标 题: Re: 请教:找出10天内下了超过5次单的customers
发信站: BBS 未名空间站 (Tue Oct 6 16:04:11 2015, 美东)
select o1.CustomerID , COUNT(*)
from orders o1 join orders o2
on o1.CustomerID = o2.CustomerID
where o1. OrderDate > o2. OrderDate
and o1. OrderDate < o2. OrderDate+ 10
group by o1.CustomerID
having COUNT(*) > 5;
avatar
c*d
25
你能给我举出个不能实现的例子吗

【在 m******u 的大作中提到】
: 不是任意subquery都能用join实现的。
avatar
c*d
26
如果只是要找到这样的ID,加上distinct去掉重复的

count

【在 m******u 的大作中提到】
: 是不是要distinct一下。不然会重复选出一些customerid吧。select list 中的count
: (*)可以去掉。
: 发信人: coolbid (Dreams bring hopes), 信区: Database
: 标 题: Re: 请教:找出10天内下了超过5次单的customers
: 发信站: BBS 未名空间站 (Tue Oct 6 16:04:11 2015, 美东)
: select o1.CustomerID , COUNT(*)
: from orders o1 join orders o2
: on o1.CustomerID = o2.CustomerID
: where o1. OrderDate > o2. OrderDate
: and o1. OrderDate < o2. OrderDate+ 10

avatar
m*u
27
你这个query是错的。我在adventureworks上试过了。找出的数据是错的。不是任意连
续10。原因可能是没join上。这里贴上customerid是11330的所有order。11330是你
query找出来的最前面的一位customer,你看他的order没有连续10天超过5个的。
11330 2007-11-17 00:00:00.000 2007-11-12 00:00:00.000
11330 2007-11-25 00:00:00.000 2007-11-17 00:00:00.000
11330 2007-11-25 00:00:00.000 2007-11-17 00:00:00.000
11330 2007-12-07 00:00:00.000 2007-12-06 00:00:00.000
11330 2007-12-17 00:00:00.000 2007-12-07 00:00:00.000
11330 2007-12-19 00:00:00.000 2007-12-17 00:00:00.000
11330 2008-01-10 00:00:00.000 2008-01-06 00:00:00.000
11330 2008-03-07 00:00:00.000 2008-02-27 00:00:00.000
11330 2008-05-02 00:00:00.000 2008-04-24 00:00:00.000
11330 2008-06-01 00:00:00.000 2008-05-22 00:00:00.000
11330 2008-06-03 00:00:00.000 2008-06-01 00:00:00.000
11330 2008-06-13 00:00:00.000 2008-06-03 00:00:00.000
11330 2008-06-16 00:00:00.000 2008-06-13 00:00:00.000
avatar
m*u
28
上贴贴上的例子,漏了header。分别是:customerid, o1.orderdate, o2.orderdate
。可以看出没有连续10天超出5个order。
avatar
B*g
29
苦逼的大师group by时丢了一个

orderdate

【在 m******u 的大作中提到】
: 上贴贴上的例子,漏了header。分别是:customerid, o1.orderdate, o2.orderdate
: 。可以看出没有连续10天超出5个order。

avatar
m*u
30
请问丢掉的是哪一个啥?
发信人: Beijing (我是猪,听说猪是被祝福的), 信区: Database
标 题: Re: 请教:找出10天内下了超过5次单的customers
发信站: BBS 未名空间站 (Tue Oct 6 16:46:25 2015, 美东)
苦逼的大师group by时丢了一个
avatar
B*g
31
group by o1.CustomerID, o1.orderdate

【在 m******u 的大作中提到】
: 请问丢掉的是哪一个啥?
: 发信人: Beijing (我是猪,听说猪是被祝福的), 信区: Database
: 标 题: Re: 请教:找出10天内下了超过5次单的customers
: 发信站: BBS 未名空间站 (Tue Oct 6 16:46:25 2015, 美东)
: 苦逼的大师group by时丢了一个

avatar
m*u
32
加上这个之后只有一位11300的customer了。(在adventureworks2008r2,Sales.
SalesOrderHeader测试)
avatar
m*u
33
该11300同学在2008-2-8 到2008-2-18间超过5个order,且只有这一次。
avatar
z0
34
select a.CustomerID ,
a.OrderDate ,
a.OrderID
from your_table a
join your_table b
on a.CustomerID = b.CustomerID
and a.OrderDate between b.OrderDate - 10 and b.OrderDate
group by 1,2,3
having count(1) >= 10 ;
avatar
l*s
35
sort the table based on ordering time, then check very other five records if
the period is less than 10 days.
avatar
c*d
36
确实少写了orderdate, 另外最后having count(*)不是5,是 5-1 = 4
select distinct o2.Customer_ID
from orders o1, orders o2
where o1.Customer_ID = o2.Customer_ID
and o1.order_date > o2.order_date
and o1.order_date <= o2.order_date + 10
group by o2.Customer_ID, o2.order_date
having COUNT(*) >= 4

【在 B*****g 的大作中提到】
: 苦逼的大师group by时丢了一个
:
: orderdate

avatar
c*d
37
a.orderID肯定不能出现在group by里,如果orderID是不重复的

【在 z0 的大作中提到】
: select a.CustomerID ,
: a.OrderDate ,
: a.OrderID
: from your_table a
: join your_table b
: on a.CustomerID = b.CustomerID
: and a.OrderDate between b.OrderDate - 10 and b.OrderDate
: group by 1,2,3
: having count(1) >= 10 ;

avatar
c*d
38
order by orderID, orderDate可以用SQL做
后面check every five records if period is less than 10 days怎么用SQL做?如果
不用PL/SQL游标的话

if

【在 l*********s 的大作中提到】
: sort the table based on ordering time, then check very other five records if
: the period is less than 10 days.

avatar
z*z
39
根据lz的时间格式, 这个query会漏掉在同一天下的不同单子。

【在 c*****d 的大作中提到】
: 确实少写了orderdate, 另外最后having count(*)不是5,是 5-1 = 4
: select distinct o2.Customer_ID
: from orders o1, orders o2
: where o1.Customer_ID = o2.Customer_ID
: and o1.order_date > o2.order_date
: and o1.order_date <= o2.order_date + 10
: group by o2.Customer_ID, o2.order_date
: having COUNT(*) >= 4

avatar
B*g
40
我贴的方法2呀

【在 c*****d 的大作中提到】
: order by orderID, orderDate可以用SQL做
: 后面check every five records if period is less than 10 days怎么用SQL做?如果
: 不用PL/SQL游标的话
:
: if

avatar
B*g
41
机器人帖子大家太认真,嘿嘿

【在 z****z 的大作中提到】
: 根据lz的时间格式, 这个query会漏掉在同一天下的不同单子。
avatar
s*o
42
你先做个10天的表吧,从哪天开始到哪天结束,
先找到最开始的ORDER,总不可能是从1900开始吧,然后到最后的2015年
CALL STORED PROCEDURE PASS IN STARTDATE ENDDATE BY CURSOR
SP里,INSERT INTO A TABLE DISTINCT CUSTOMER_ID
虽然笨了点
avatar
s*o
43
还有一个办法,找到ORDER>=5次的CUSTOMER_ID LIST
对于每一个order 超过5次的CUSTOMER的ORDER进行排序
最多ORDER多少次MAX
用CURSOR对每一个ORDER 超过5次的CUSTOMER_ID
从5 LOOP到MAX
如果 orderdate 5-1, 6-2,7-3,8-4,一直LOOP到MAX- (MAX-4) 如果有<10的
跳出LOOP ADD CUSTOMER_ID to final list
NEXT CUSTOMER
ORDER_SEQ MAXORDER CUSTOMER_ID ORDERDATE
1 5 123 1/1/1900
2 5 123 1/2/1900
3 5 123 2/2/1900
4 5 123 3/2/1900
5 5 123 4/2/1900
1 7 234 1/1/1900
2 7 234 1/2/1900
3 7 234 2/2/1900
4 7 234 3/2/1900
5 7 234 4/2/1900
6 7 234 6/2/1900
7 7 234 9/2/1900
1 10 345 1/1/1900
2 10 345 1/2/1900
3 10 345 2/2/1900
4 10 345 3/2/1900
5 10 345 4/2/1900
6 10 345 6/2/1900
7 10 345 9/2/1900
8 10 345 10/2/1900
9 10 345 11/2/1900
10 10 345 12/2/1900
avatar
w*r
44
CREATE TABLE CALENDAR (C_DATE DATE) ;
POPULATE CALENDAR WITH SEQUENCE OF DATES
SELECT
CUSTOMER,
SUM(O_CNT) OVER (PARTITION BY CUSTOMER ROWS BETWEEN 10 PRECEDING ROWS AND
CURRENT ROW)
AS ORDER_CNT_WITHIN_10_DAY
(
SELECT CDATE, CUSTOMER, COUNT(*) AS O_CNT
FROM CALENDAR C
LEFT OUTER JOIN
ORDER O
ON
C.C_DATE = O.O_DATE
GROUP BY CDATE, CUSTOMER
) A
QUALIFY ORDER_CNT_WITHIN_10_DAY >=10
avatar
c*s
45
求移动平均即可。
avatar
m*u
46
That is an interesting idea. Please elaborate more. Thanks.
发信人: cognos (必得), 信区: Database
标 题: Re: 请教:找出10天内下了超过5次单的customers
发信站: BBS 未名空间站 (Fri Oct 9 23:16:56 2015, 美东)
求移动平均即可。
avatar
m*n
47
这道题有最终答案吗?
不太好解。
avatar
w*w
48
select CustomerID
from (
select a.CustomerID,a.OrderDate,a.SalesOrderID,COUNT(b.OrderDate) Cnt
from [Sales].[SalesOrderHeader] a join [Sales].[SalesOrderHeader] b
on a.CustomerID=b.CustomerID
where DATEDIFF(day,a.OrderDate,b.OrderDate) between 0 and 10
group by a.CustomerID,a.OrderDate,a.SalesOrderID
) c
group by c.CustomerID
having MAX(Cnt)>=5;
The key is for each order, count the number of orders in next 10 days.
OrderID here is for order identification, otherwise orders with same date
will be merged during group by. Here is an example:
CustomerID OrderDate OrderID
11176 2007-08-13 00:00:00.000 52472
11176 2007-08-14 00:00:00.000 52535
11176 2007-08-14 00:00:00.000 52538
11176 2007-08-17 00:00:00.000 52708

【在 m****n 的大作中提到】
: 这道题有最终答案吗?
: 不太好解。

avatar
l*n
49
MySQL下有表格:
CustomerID OrderDate
101 2014-12-11
102 2014-12-13
101 2014-12-14
103 2014-12-15
... ...
如果想找出m天内下了超过k次单的顾客,能不能不用sub query实现?
avatar
w*n
50
select custid
from yourtable
where sysdate-orderdate》m
group by custid
having count(custid)》k
tested in oracle

【在 l**n 的大作中提到】
: MySQL下有表格:
: CustomerID OrderDate
: 101 2014-12-11
: 102 2014-12-13
: 101 2014-12-14
: 103 2014-12-15
: ... ...
: 如果想找出m天内下了超过k次单的顾客,能不能不用sub query实现?

avatar
s*o
51
对的,如果这个简单的问题都不会,SQL基本就不怎么懂
还可以用PARTITION BY进行RANK,由高到低

【在 w****n 的大作中提到】
: select custid
: from yourtable
: where sysdate-orderdate》m
: group by custid
: having count(custid)》k
: tested in oracle

avatar
l*n
52
不是最近10天,是任何10天内

【在 w****n 的大作中提到】
: select custid
: from yourtable
: where sysdate-orderdate》m
: group by custid
: having count(custid)》k
: tested in oracle

avatar
l*n
53
有可能我没说清楚,不是最近10天,而是任何10天内
如果是最近10天内,那么这个很简单

【在 s**********o 的大作中提到】
: 对的,如果这个简单的问题都不会,SQL基本就不怎么懂
: 还可以用PARTITION BY进行RANK,由高到低

avatar
m*u
54
LZ是个女的。既然都更新了,何不更准确点:应该是任意连续的m天。不是最近10天,
也不是任意10天,而是任意连续的10天。
是不太好做。哪位大拿做出来,请贴上来。
发信人: lvin (snake~), 信区: Database
标 题: Re: 请教:找出10天内下了超过5次单的customers
发信站: BBS 未名空间站 (Tue Oct 6 15:39:33 2015, 美东)
有可能我没说清楚,不是最近10天,而是任何10天内
如果是最近10天内,那么这个很简单
avatar
m*u
55
要用到循环或cursors么?
avatar
B*g
56
方法一 selfjoin, join 10天之内的,然后count >=5。
方法二 partition by (LAG),找前面第5个,看时间是不是差是不是小于10天
由于机器人的要求是mysql,所以方法二不能使用
avatar
c*d
57
beijing说:任何语句都可以用partition实现
coolbid说:任何subquery都可以用join实现

【在 m******u 的大作中提到】
: LZ是个女的。既然都更新了,何不更准确点:应该是任意连续的m天。不是最近10天,
: 也不是任意10天,而是任意连续的10天。
: 是不太好做。哪位大拿做出来,请贴上来。
: 发信人: lvin (snake~), 信区: Database
: 标 题: Re: 请教:找出10天内下了超过5次单的customers
: 发信站: BBS 未名空间站 (Tue Oct 6 15:39:33 2015, 美东)
: 有可能我没说清楚,不是最近10天,而是任何10天内
: 如果是最近10天内,那么这个很简单

avatar
B*g
58
ding
再加一句,在mysql上还玩复杂sql的都是耍流氓

【在 c*****d 的大作中提到】
: beijing说:任何语句都可以用partition实现
: coolbid说:任何subquery都可以用join实现

avatar
c*d
59
select o1.CustomerID , COUNT(*)
from orders o1 join orders o2
on o1.CustomerID = o2.CustomerID
where o1. OrderDate > o2. OrderDate
and o1. OrderDate < o2. OrderDate+ 10
group by o1.CustomerID
having COUNT(*) > 5;
avatar
m*u
60
不是任意subquery都能用join实现的。
avatar
m*u
61
是不是要distinct一下。不然会重复选出一些customerid吧。select list 中的count
(*)可以去掉。
发信人: coolbid (Dreams bring hopes), 信区: Database
标 题: Re: 请教:找出10天内下了超过5次单的customers
发信站: BBS 未名空间站 (Tue Oct 6 16:04:11 2015, 美东)
select o1.CustomerID , COUNT(*)
from orders o1 join orders o2
on o1.CustomerID = o2.CustomerID
where o1. OrderDate > o2. OrderDate
and o1. OrderDate < o2. OrderDate+ 10
group by o1.CustomerID
having COUNT(*) > 5;
avatar
c*d
62
你能给我举出个不能实现的例子吗

【在 m******u 的大作中提到】
: 不是任意subquery都能用join实现的。
avatar
c*d
63
如果只是要找到这样的ID,加上distinct去掉重复的

count

【在 m******u 的大作中提到】
: 是不是要distinct一下。不然会重复选出一些customerid吧。select list 中的count
: (*)可以去掉。
: 发信人: coolbid (Dreams bring hopes), 信区: Database
: 标 题: Re: 请教:找出10天内下了超过5次单的customers
: 发信站: BBS 未名空间站 (Tue Oct 6 16:04:11 2015, 美东)
: select o1.CustomerID , COUNT(*)
: from orders o1 join orders o2
: on o1.CustomerID = o2.CustomerID
: where o1. OrderDate > o2. OrderDate
: and o1. OrderDate < o2. OrderDate+ 10

avatar
m*u
64
你这个query是错的。我在adventureworks上试过了。找出的数据是错的。不是任意连
续10。原因可能是没join上。这里贴上customerid是11330的所有order。11330是你
query找出来的最前面的一位customer,你看他的order没有连续10天超过5个的。
11330 2007-11-17 00:00:00.000 2007-11-12 00:00:00.000
11330 2007-11-25 00:00:00.000 2007-11-17 00:00:00.000
11330 2007-11-25 00:00:00.000 2007-11-17 00:00:00.000
11330 2007-12-07 00:00:00.000 2007-12-06 00:00:00.000
11330 2007-12-17 00:00:00.000 2007-12-07 00:00:00.000
11330 2007-12-19 00:00:00.000 2007-12-17 00:00:00.000
11330 2008-01-10 00:00:00.000 2008-01-06 00:00:00.000
11330 2008-03-07 00:00:00.000 2008-02-27 00:00:00.000
11330 2008-05-02 00:00:00.000 2008-04-24 00:00:00.000
11330 2008-06-01 00:00:00.000 2008-05-22 00:00:00.000
11330 2008-06-03 00:00:00.000 2008-06-01 00:00:00.000
11330 2008-06-13 00:00:00.000 2008-06-03 00:00:00.000
11330 2008-06-16 00:00:00.000 2008-06-13 00:00:00.000
avatar
m*u
65
上贴贴上的例子,漏了header。分别是:customerid, o1.orderdate, o2.orderdate
。可以看出没有连续10天超出5个order。
avatar
B*g
66
苦逼的大师group by时丢了一个

orderdate

【在 m******u 的大作中提到】
: 上贴贴上的例子,漏了header。分别是:customerid, o1.orderdate, o2.orderdate
: 。可以看出没有连续10天超出5个order。

avatar
m*u
67
请问丢掉的是哪一个啥?
发信人: Beijing (我是猪,听说猪是被祝福的), 信区: Database
标 题: Re: 请教:找出10天内下了超过5次单的customers
发信站: BBS 未名空间站 (Tue Oct 6 16:46:25 2015, 美东)
苦逼的大师group by时丢了一个
avatar
B*g
68
group by o1.CustomerID, o1.orderdate

【在 m******u 的大作中提到】
: 请问丢掉的是哪一个啥?
: 发信人: Beijing (我是猪,听说猪是被祝福的), 信区: Database
: 标 题: Re: 请教:找出10天内下了超过5次单的customers
: 发信站: BBS 未名空间站 (Tue Oct 6 16:46:25 2015, 美东)
: 苦逼的大师group by时丢了一个

avatar
m*u
69
加上这个之后只有一位11300的customer了。(在adventureworks2008r2,Sales.
SalesOrderHeader测试)
avatar
m*u
70
该11300同学在2008-2-8 到2008-2-18间超过5个order,且只有这一次。
avatar
z0
71
select a.CustomerID ,
a.OrderDate ,
a.OrderID
from your_table a
join your_table b
on a.CustomerID = b.CustomerID
and a.OrderDate between b.OrderDate - 10 and b.OrderDate
group by 1,2,3
having count(1) >= 10 ;
avatar
l*s
72
sort the table based on ordering time, then check very other five records if
the period is less than 10 days.
avatar
c*d
73
确实少写了orderdate, 另外最后having count(*)不是5,是 5-1 = 4
select distinct o2.Customer_ID
from orders o1, orders o2
where o1.Customer_ID = o2.Customer_ID
and o1.order_date > o2.order_date
and o1.order_date <= o2.order_date + 10
group by o2.Customer_ID, o2.order_date
having COUNT(*) >= 4

【在 B*****g 的大作中提到】
: 苦逼的大师group by时丢了一个
:
: orderdate

avatar
c*d
74
a.orderID肯定不能出现在group by里,如果orderID是不重复的

【在 z0 的大作中提到】
: select a.CustomerID ,
: a.OrderDate ,
: a.OrderID
: from your_table a
: join your_table b
: on a.CustomerID = b.CustomerID
: and a.OrderDate between b.OrderDate - 10 and b.OrderDate
: group by 1,2,3
: having count(1) >= 10 ;

avatar
c*d
75
order by orderID, orderDate可以用SQL做
后面check every five records if period is less than 10 days怎么用SQL做?如果
不用PL/SQL游标的话

if

【在 l*********s 的大作中提到】
: sort the table based on ordering time, then check very other five records if
: the period is less than 10 days.

avatar
z*z
76
根据lz的时间格式, 这个query会漏掉在同一天下的不同单子。

【在 c*****d 的大作中提到】
: 确实少写了orderdate, 另外最后having count(*)不是5,是 5-1 = 4
: select distinct o2.Customer_ID
: from orders o1, orders o2
: where o1.Customer_ID = o2.Customer_ID
: and o1.order_date > o2.order_date
: and o1.order_date <= o2.order_date + 10
: group by o2.Customer_ID, o2.order_date
: having COUNT(*) >= 4

avatar
B*g
77
我贴的方法2呀

【在 c*****d 的大作中提到】
: order by orderID, orderDate可以用SQL做
: 后面check every five records if period is less than 10 days怎么用SQL做?如果
: 不用PL/SQL游标的话
:
: if

avatar
B*g
78
机器人帖子大家太认真,嘿嘿

【在 z****z 的大作中提到】
: 根据lz的时间格式, 这个query会漏掉在同一天下的不同单子。
avatar
s*o
79
你先做个10天的表吧,从哪天开始到哪天结束,
先找到最开始的ORDER,总不可能是从1900开始吧,然后到最后的2015年
CALL STORED PROCEDURE PASS IN STARTDATE ENDDATE BY CURSOR
SP里,INSERT INTO A TABLE DISTINCT CUSTOMER_ID
虽然笨了点
avatar
s*o
80
还有一个办法,找到ORDER>=5次的CUSTOMER_ID LIST
对于每一个order 超过5次的CUSTOMER的ORDER进行排序
最多ORDER多少次MAX
用CURSOR对每一个ORDER 超过5次的CUSTOMER_ID
从5 LOOP到MAX
如果 orderdate 5-1, 6-2,7-3,8-4,一直LOOP到MAX- (MAX-4) 如果有<10的
跳出LOOP ADD CUSTOMER_ID to final list
NEXT CUSTOMER
ORDER_SEQ MAXORDER CUSTOMER_ID ORDERDATE
1 5 123 1/1/1900
2 5 123 1/2/1900
3 5 123 2/2/1900
4 5 123 3/2/1900
5 5 123 4/2/1900
1 7 234 1/1/1900
2 7 234 1/2/1900
3 7 234 2/2/1900
4 7 234 3/2/1900
5 7 234 4/2/1900
6 7 234 6/2/1900
7 7 234 9/2/1900
1 10 345 1/1/1900
2 10 345 1/2/1900
3 10 345 2/2/1900
4 10 345 3/2/1900
5 10 345 4/2/1900
6 10 345 6/2/1900
7 10 345 9/2/1900
8 10 345 10/2/1900
9 10 345 11/2/1900
10 10 345 12/2/1900
avatar
w*r
81
CREATE TABLE CALENDAR (C_DATE DATE) ;
POPULATE CALENDAR WITH SEQUENCE OF DATES
SELECT
CUSTOMER,
SUM(O_CNT) OVER (PARTITION BY CUSTOMER ROWS BETWEEN 10 PRECEDING ROWS AND
CURRENT ROW)
AS ORDER_CNT_WITHIN_10_DAY
(
SELECT CDATE, CUSTOMER, COUNT(*) AS O_CNT
FROM CALENDAR C
LEFT OUTER JOIN
ORDER O
ON
C.C_DATE = O.O_DATE
GROUP BY CDATE, CUSTOMER
) A
QUALIFY ORDER_CNT_WITHIN_10_DAY >=10
avatar
c*s
82
求移动平均即可。
avatar
m*u
83
That is an interesting idea. Please elaborate more. Thanks.
发信人: cognos (必得), 信区: Database
标 题: Re: 请教:找出10天内下了超过5次单的customers
发信站: BBS 未名空间站 (Fri Oct 9 23:16:56 2015, 美东)
求移动平均即可。
avatar
m*n
84
这道题有最终答案吗?
不太好解。
avatar
w*w
85
select CustomerID
from (
select a.CustomerID,a.OrderDate,a.SalesOrderID,COUNT(b.OrderDate) Cnt
from [Sales].[SalesOrderHeader] a join [Sales].[SalesOrderHeader] b
on a.CustomerID=b.CustomerID
where DATEDIFF(day,a.OrderDate,b.OrderDate) between 0 and 10
group by a.CustomerID,a.OrderDate,a.SalesOrderID
) c
group by c.CustomerID
having MAX(Cnt)>=5;
The key is for each order, count the number of orders in next 10 days.
OrderID here is for order identification, otherwise orders with same date
will be merged during group by. Here is an example:
CustomerID OrderDate OrderID
11176 2007-08-13 00:00:00.000 52472
11176 2007-08-14 00:00:00.000 52535
11176 2007-08-14 00:00:00.000 52538
11176 2007-08-17 00:00:00.000 52708

【在 m****n 的大作中提到】
: 这道题有最终答案吗?
: 不太好解。

avatar
A*g
86
总结一下,在advanctureworks下验证过:
select distinct Customerid from
(
Select ss1.customerid, ss1.salesorderid,count(*) as CountNumber
from
sales.SalesOrderHeader as ss1
join
sales.SalesOrderHeader as ss2
on ss1.CustomerID = ss2.CustomerID
and ss1.OrderDate <= ss2.OrderDate
and ss1.OrderDate >= ss2.orderDate - 10
group by ss1.customerid, ss1.salesorderid
having count(*) > =5
order by 1
) as result
avatar
A*g
87
去掉 order by

总结一下,在advanctureworks下验证过:select distinct Customerid from ( Select
ss1.customerid, ss1.s........

【在 A*******g 的大作中提到】
: 总结一下,在advanctureworks下验证过:
: select distinct Customerid from
: (
: Select ss1.customerid, ss1.salesorderid,count(*) as CountNumber
: from
: sales.SalesOrderHeader as ss1
: join
: sales.SalesOrderHeader as ss2
: on ss1.CustomerID = ss2.CustomerID
: and ss1.OrderDate <= ss2.OrderDate

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。