-2

立ち上げ中のお店のレンタルシステムを作っています。必要なクエリの 1 つは、過去 12 か月間で最も多く借りた顧客を見つけることです。date_out 列と date_in 列、および顧客の賃貸料の数を表す数値があります。

テーブル: 顧客 (列: 名前、電話番号) & トランザクション (date_out、date_in)

TO_DATE で日付を挿入しています。

私がこれを行う方法を知っている人はいますか?

編集: 現在、num_of_rents に 8 を入力した代わりに、rent_count として 1 のみを表示しています。

4

2 に答える 2

0
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
于 2012-11-26T16:06:54.993 に答える
0

それらは実際のテーブルですか。目的に合わない場合は、少なくとも 2 つの間に何らかのリンクが必要です。

少なくとも、これらの線に沿ったものが必要です。

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 句を微調整する必要があるのは、状況に応じて賃料を構成するもの、つまり期間内に開始する賃料、期間内に終了する賃料、またはその両方に応じて調整する必要があります。

于 2012-11-26T17:07:12.820 に答える