日期:2014-05-17  浏览次数:20910 次

oralce二个表关联查询的小问题,在线等
oralce中,有二个表
年纪表  d_age
age_id sub1_id min_value max_value age_desc    sub1_desc
1        1        6        10         6-15岁    6-10岁
2        2        11       15         6-15岁    11-15岁

用户资料表
dw_user
cust_id   gender          age        deposit       owe             
1          女             7             100.0       200
2          男             21            150.25      0

现需:
据上面的二个表,编写sql查询语句,列出符合条件(非女性,年纪不到50)的age_desc 组其用户数,
deposit 汇总值及平均值,要求查询结果含下面的数据

age_desc描述
此组内的用户数
此组内的depoist汇总值
此组内的deposit平均值

显示结果示例

6-15岁  20  300    76 

请问,这sql如何写呢,

------解决方案--------------------
有两个问题需要楼主确认:
一 两个表之间用什么来关联
二 判断用户数的口径是什么
三 age_desc中怎么都是一样的,和前面的最大值和最小值似乎没有关系
判断条件‘非女性,年纪不到50’,都可以在where子句中进行限制。剩下的就是依据age_desc进行分组了,我认为是用到count ,sum,avg的聚合函数
------解决方案--------------------

SELECT B.AGE_DESC,SUM(A.DEPOSIT),AVG(A.DEPOSIT)
  FROM DW_USER A,D_AGE B
WHERE A.AGE BETWEEN B.MIN_VALUE AND B.MAX_VALUE
  AND A.AGE<50
GROUP BY B.AGE_DESC

------解决方案--------------------
非女性.....擦

SELECT B.AGE_DESC,SUM(A.DEPOSIT),AVG(A.DEPOSIT)
  FROM DW_USER A,D_AGE B
WHERE A.AGE BETWEEN B.MIN_VALUE AND B.MAX_VALUE
  AND A.AGE<50
  AND A.GENDER != '女'
GROUP BY B.AGE_DESC

------解决方案--------------------
建议提类似问题的时候,最好能把建表语句和数据插入同时提供,这样会更方便大家对你的问题作答