我正在为正在建立的店铺创建租赁系统。我需要的其中一个问题是找到过去12个月租用最多的客户。我有date_out和date_in列和一个数字来表示客户的租金数量。Oracle SQL +查询
表:客户(列:姓名,电话)&交易(date_out,date_in)
我将与TO_DATE日期。
有没有人知道我会怎么做呢?
编辑:目前它只显示1作为rent_count,而不是我输入的num_of_rents 8。
我正在为正在建立的店铺创建租赁系统。我需要的其中一个问题是找到过去12个月租用最多的客户。我有date_out和date_in列和一个数字来表示客户的租金数量。Oracle SQL +查询
表:客户(列:姓名,电话)&交易(date_out,date_in)
我将与TO_DATE日期。
有没有人知道我会怎么做呢?
编辑:目前它只显示1作为rent_count,而不是我输入的num_of_rents 8。
select customer_name, count(num_of_rents) as rent_count
from customers
where (SYSDATE - customer_DOB) <= 365
group by customer_name
order by rent_count desc
那些是你的实际表,如果是这样,他们不适合的目的,您至少需要某种两者之间的联系。
至少你会需要沿着这些线。
CREATE TABLE customers (customer_id number(8), customer_name VARCHAR2(30), phone VARCHAR2(10));
CREATE TABLE rents (customer_id number(8), rent_id number(8), date_from DATE, date_to DATE);
INSERT INTO customers (customer_id, customer_name, phone) VALUES (1, 'Test Customer', '1234');
INSERT INTO rents (customer_id, rent_id, date_from, date_to) VALUES (1,1,TO_DATE('01/03/2011','DD/MM/YYYY'), TO_DATE('02/03/2011','DD/MM/YYYY'));
INSERT INTO rents (customer_id, rent_id, date_from, date_to) VALUES (1,1,TO_DATE('01/04/2012','DD/MM/YYYY'), TO_DATE('05/04/2012','DD/MM/YYYY'));
INSERT INTO rents (customer_id, rent_id, date_from, date_to) VALUES (1,2,TO_DATE('16/08/2012','DD/MM/YYYY'), TO_DATE('17/08/2012','DD/MM/YYYY'));
SELECT customer_name, count(rent_id) FROM customers
JOIN rents on customers.customer_id = rents.customer_id
WHERE DATE_TO BETWEEN SYSDATE-365 AND SYSDATE
GROUP BY customer_name;
你需要tweek WHERE子句取决于什么构成了你的上下文,即刚刚开始的时期,在一个时期或两者结束的租金出租。
请将您的表格结构和一些示例数据添加到您的问题 –
表格:Customer(列:name,phone,num_of_rents)事务(列:date_out,date_in)日期插入:INSERT INTO TRANSACTION_T VALUES(TO_DATE('24 -MAY ''''DD-MON-YYYY'),TO_DATE('23 -AUG-2011','DD-MON-YYYY')); – user1853923
请更新您的问题,并且不要在评论中添加太多的代码。 –