Oracle SQL+查询

Oracle SQL+查询,sql,oracle,Sql,Oracle,我正在为我正在建立的一家商店创建一个租赁系统。我需要的一个查询是找到过去12个月内租房最多的客户。我在列中有date_out和date_,还有一个数字表示客户的租金数量 表:客户列:姓名、电话和交易日期、输入日期 我正在插入日期为TO_DATE的日期 有人知道我会怎么做吗 编辑:目前它只显示1作为租金计数,而不是我输入的8作为租金计数。这些是您的实际表格,如果它们不适合使用,至少您需要在两者之间建立某种链接 select customer_name, count(num_of_rents) as

我正在为我正在建立的一家商店创建一个租赁系统。我需要的一个查询是找到过去12个月内租房最多的客户。我在列中有date_out和date_,还有一个数字表示客户的租金数量

表:客户列:姓名、电话和交易日期、输入日期

我正在插入日期为TO_DATE的日期

有人知道我会怎么做吗


编辑:目前它只显示1作为租金计数,而不是我输入的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;

您需要查看WHERE子句,这取决于在您的上下文中租金的构成,即刚开始于期间的租金、结束于期间的租金或两者兼而有之。

请将您的表格结构和一些示例数据添加到您的问题表中:客户列:姓名、电话、租金交易列的数量:日期,日期插入中的日期:将日期'2006年5月24日','DD-MON-YYYY',日期'2011年8月23日','DD-MON-YYYY'的值插入交易中;请更新您的问题,不要在注释中添加太多代码。示例结果也会很好,以查看您如何计算它们。