j****s 发帖数: 881 | 1 语法改错题,这语法挺混乱的。
Correct the syntax of this statement and make as small as possible:
select *
from t_rates a
join t_rates b
on a.ref1 = b.ref1
and a.ref2 = b.ref2
and a.BEG_DT between b.BEG_DT and b.END_DT
or a.ref1 = b.ref1
and a.ref2 = b.ref2
and a.END_DT between b.BEG_DT and b.END_DT
where cust_num is not null
and a.rate > .5
or a.rate < 0 |
j****s 发帖数: 881 | 2 我打的Revised T-SQL:
select *
from t_rates a join t_rates b
on a.ref1 = b.ref1 and a.ref2 = b.ref2
Where a.BEG_DT between b.BEG_DT and b.END_DT
Union
select *
from t_rates a join t_rates b
on a.ref1 = b.ref1 and a.ref2 = b.ref2
where a.END_DT between b.BEG_DT and b.END_DT
where cust_num is not null
and (a.rate > .5 or a.rate < 0)
是self join,感觉逻辑也不太清楚。 |
B*****g 发帖数: 34098 | 3 答这个题有包子吗?
【在 j****s 的大作中提到】 : 我打的Revised T-SQL: : select * : from t_rates a join t_rates b : on a.ref1 = b.ref1 and a.ref2 = b.ref2 : Where a.BEG_DT between b.BEG_DT and b.END_DT : Union : select * : from t_rates a join t_rates b : on a.ref1 = b.ref1 and a.ref2 = b.ref2 : where a.END_DT between b.BEG_DT and b.END_DT
|
k*****n 发帖数: 361 | 4 俺来试试看,题目不清楚,没有明确的要select的条件阿
select *
from t_rates a
join t_rates b
on
(
a.ref1 = b.ref1
and a.ref2 = b.ref2
and a.BEG_DT between b.BEG_DT and b.END_DT
or a.ref1 = b.ref1
and a.ref2 = b.ref2
and a.END_DT between b.BEG_DT and b.END_DT
)
and
(
a.rate > .5
or a.rate < 0
)
where a.cust_num is not null |
k*****n 发帖数: 361 | 5 select *
from t_rates a
join t_rates b
on
a.ref1 = b.ref1
and a.ref2 = b.ref2
and a.BEG_DT between b.BEG_DT and b.END_DT
or a.ref1 = b.ref1
and a.ref2 = b.ref2
and a.END_DT between b.BEG_DT and b.END_DT
where a.cust_num is not null
and (
a.rate > .5
or a.rate < 0
) |
k*****n 发帖数: 361 | 6 这回应该对了
select *
from t_rates a
join t_rates b
on
a.ref1 = b.ref1
and a.ref2 = b.ref2
where a.cust_num is not null
and (
a.rate > .5
or a.rate < 0
)
and
(
a.BEG_DT between b.BEG_DT and b.END_DT
or
a.END_DT between b.BEG_DT and b.END_DT
) |
j****s 发帖数: 881 | 7 多谢了,包子已发。
还有一个小题答完之后才知道错了,其实很简单,就是insert values的时候,先要
insert into dimension table,再insert into fact table。我当时没有留意,匆忙做
了。
【在 k*****n 的大作中提到】 : 这回应该对了 : select * : from t_rates a : join t_rates b : on : a.ref1 = b.ref1 : and a.ref2 = b.ref2 : where a.cust_num is not null : and ( : a.rate > .5
|
j****s 发帖数: 881 | 8 不会吧,交流面试题,互利互惠,繁荣版面还要发包子啊?
【在 B*****g 的大作中提到】 : 答这个题有包子吗?
|
B*****g 发帖数: 34098 | 9 不愿动脑子,赫赫。
【在 j****s 的大作中提到】 : 不会吧,交流面试题,互利互惠,繁荣版面还要发包子啊?
|
k*****n 发帖数: 361 | 10 你面的是啥职位???
developer or DBA?
好像我就一年的analyst也能答出来..
.
【在 j****s 的大作中提到】 : 多谢了,包子已发。 : 还有一个小题答完之后才知道错了,其实很简单,就是insert values的时候,先要 : insert into dimension table,再insert into fact table。我当时没有留意,匆忙做 : 了。
|
|
|
B*****g 发帖数: 34098 | 11 你解释一下你的sql得到什么结果。
【在 k*****n 的大作中提到】 : 你面的是啥职位??? : developer or DBA? : 好像我就一年的analyst也能答出来.. : .
|
k*****n 发帖数: 361 | 12 俺凭感觉来的....
两张表用这个条件join起来
a.ref1 = b.ref1
and a.ref2 = b.ref2
然后再选出符合下面三个条件的
1. a.cust_num is not null
2.
rate > .5
or a.rate < 0
3.
a.BEG_DT between b.BEG_DT and b.END_DT
or
a.END_DT between b.BEG_DT and b.END_DT
)
其实join on 的条件和where等价,但是join on的条件应该是两个表最基本的
priority/forgien key连接,其余的用where来限制,这个事我自己琢磨出来的...
请大牛指教... |
B*****g 发帖数: 34098 | 13 sql是为了得出结果,你sql的结果是什么意义?
【在 k*****n 的大作中提到】 : 俺凭感觉来的.... : 两张表用这个条件join起来 : a.ref1 = b.ref1 : and a.ref2 = b.ref2 : 然后再选出符合下面三个条件的 : 1. a.cust_num is not null : 2. : rate > .5 : or a.rate < 0 : 3.
|
k*****n 发帖数: 361 | 14 这个要把实际的表贴出来...
不知道大牛到底是问啥...肯定在trick我...
【在 B*****g 的大作中提到】 : sql是为了得出结果,你sql的结果是什么意义?
|
g***l 发帖数: 18555 | |
k*****n 发帖数: 361 | 16 昨天看电影时想到的,觉得这两个条件还是应该放在join on里面,因为涉及到两个表
。。。
and a.BEG_DT between b.BEG_DT and b.END_DT
and a.END_DT between b.BEG_DT and b.END_DT |