我正在爲正在建立的店鋪創建租賃系統。我需要的其中一個問題是找到過去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
請更新您的問題,並且不要在評論中添加太多的代碼。 –