日期:2014-05-16  浏览次数:20824 次

Oracle查询
有一个ORACLE数据库表TEST,有四个字段,用户ID USER_ID(NUMBER),商品类型ID TYPE_ID(NUMBER),商品价格 PRICE(NUMBER),购买时间 CREATE_TIME(DATE)    (每条记录用户只购买一件商品)   
(1) 查出表中不同的用户总数    
(2) 查出本月销售总额   
(3) 查出每天的(不同)用户数,总购买次数,销售额    
(4) 查出所有用户总的购买次数,购买的商品类型总数,该用户购买的商品的平均价格,总价    
(5) 查出所有用户每种商品类型的购买次数    
(6) 查出购买过2次(含)以上的用户列表    
(7) 查出购买过商品1(商品ID为1)且购买过商品2(商品ID为2)的所有用户列表    
(8) 查出购买商品1(商品ID为1)超过2次(含)且购买过商品2(商品ID为2)超过2次(含)的所有用户列表    
(9) 查出今年1月和2月都购买商品超过2次(含)的所有用户列表    
(10) 查出商品购买次数的人数列表,如:        购买1次  100人        购买2次  50人        ... 
------解决方案--------------------
按LZ给出的字段 写了3个


create table TEST (USER_ID NUMBER,TYPE_ID NUMBER,PRICE NUMBER,CREATE_TIME DATE);

insert into TEST values (1,1,199,date'2012-01-01');
insert into TEST values  (2,2,299,date'2012-01-01');
insert into TEST values  (3,2,299,date'2012-01-01');
insert into TEST values  (4,1,199,date'2012-01-01');
insert into TEST values  (1,3,399,date'2012-01-11'); 
insert into TEST values  (1,4,499,date'2012-01-11');
insert into TEST values  (3,3,399,date'2012-02-01');
insert into TEST values  (1,5,599,date'2012-02-01');
insert into TEST values  (4,2,299,date'2012-02-01');
insert into TEST values  (4,3,399,date'2012-02-01');
insert into TEST values  (4,4,499,date'2012-02-01');
insert into TEST values  (5,3,399,date'2012-03-01');
insert into TEST values  (1,4,499,date'2012-03-01');
insert into TEST values  (1,3,399,date'2012-04-01');
insert into TEST values  (2,4,499,date'2012-04-01');
       
--(1) 查出表中不同的用户总数
select count(distinct USER_ID) c_user
from TEST;

--(2) 查出本月销售总额
select sum(PRICE) s_price
from TEST
where to_char(sysdate,'yyyy-mm')=to_char(CREATE_TIME,'yyyy-mm')

--(3) 查出每天的(不同)用户数,总购买次数,销售额
select CREATE_TIME,count(distinct USER_ID) c_user,count(TYPE_ID) c_type,sum(PRICE) s_price
from TEST
group by CREATE_TIME

------解决方案--------------------
--(3) 查出每天的(不同)用户数,总购买次数,销售额
select CREATE_TIME,count(distinct USER_ID) c_user,count(TYPE_ID) c_type,sum(PRICE) s_price
from TEST
group by CREATE_TIME


这个有问题,购买次数不能按 商品来算,应该按 购买时间来算。
------解决方案--------------------
引用:
--(3) 查出每天的(不同)用户数,总购买次数,销售额
select CREATE_TIME,count(distinct USER_ID) c_user,count(TYPE_ID) c_type,sum(PRICE) s_price
from TEST
group by CREATE_TIME


这个有问题,购买次数不能按 商品来算,应该按 购买时间来算。


 只是一个购买次数  价格也只有一个 买2件的话 价格*2 但是数据还是一条 统计价格和时间 没什么区别