2017-12-24 5 views
-3

今週の注文した顧客の総数を特定します。 どうすればできますか?今週のデータ

select count(*) numberofcustomer from invoice 
where invdate=sysdate-7; 

これは間違いありませんか?

+0

「今週」を定義する必要があります。最後の7日間?または日曜日以来の注文ですか?月曜日から? –

答えて

1

請求書の総数ではなく、 "...総顧客数..."が質問されます。顧客は1週間に複数の注文を行うことができます。あなたのテーブルの顧客を特定するフィールドの名前が何であるかはわかりません。それはCUSTOMER_IDとしましょう。個々の顧客の合計数を取得するには、以下にようCOUNT(DISTINCT CUSTOMER_ID)を使用する必要があります。

WITH cteCURRENT_WEEK AS (SELECT NEXT_DAY(TRUNC(SYSDATE), 'MONDAY') - INTERVAL '7' DAY AS BEGINNING_OF_WEEK, 
           NEXT_DAY(TRUNC(SYSDATE), 'MONDAY') - INTERVAL '1' SECOND AS END_OF_WEEK 
          FROM DUAL) 
SELECT COUNT(DISTINCT CUSTOMER_ID) AS NUMBER_OF_CUSTOMERS 
    FROM INVOICE i 
    CROSS JOIN cteCURRENT_WEEK w 
    WHERE i.INVDATE BETWEEN w.BEGINNING_OF_WEEK AND w.END_OF_WEEK 

これは、「週」は日曜日の最後の第二月曜日からの第一、第二から実行されることを前提としています。あなたのビジネスが異なる週境界を使用する場合は、必要に応じてcteCURRENT_WEEKを調整する必要があります。

また、質問には、請求書の総数ではなく、注文総数を尋ねます。請求書は、顧客に出荷された内容を示す出荷伝票です。オーダーは、顧客が何を望んでいるかを示す摂取書類です。これらは2つの非常に異なるものであり、特定の週に受注しても同じ週に請求されるわけではありません。 CUSTOMER_ORDERテーブル(または同様のもの)をお持ちの場合は、INVOICEテーブルではなく、注文数を決定するためにおそらく使用しているはずです。

幸運のベスト。

+0

'TRUNC(SYSDATE、 'IW')'は現在のISO週の月曜日に日付を切り捨てます。 => TRUNC> = TRUNC(SYSDATE、 'IW')とinvvate MT0

+0

@ MT0 - すべてのビジネスがISOの週に実行されているわけではありません。たとえば、私が働いている会社では、公式にISO週ルールを遵守していませんが、実際にはほぼ常にそうした方法で動作しますが、EST/EDTの真夜中過ぎに03: 00:00それは、販売日ではなく、前のカレンダー日の合計で計上されるため、販売日は、03:01 AMから03:00 AMまで多かれ少なかれ実行されます。 –

0

これを試してください:あなたは、現在の週の最初の日を取得するためにTRUNCを使用することができ

select count(*) numberofcustomer from invoice where invdate>sysdate-7; 
+0

これは先週のデータを取得するためのものです –

+0

例えば、月曜日に始まる週のような意味ですか? –

+0

あなたは曜日に基づいてカレンダーの週を意味しますか? – Ctznkane525

1

<条件が重なりを防止するために使用されていることを

これは、これは(月曜日〜金曜日)現在の平日と比較

where invdate >= TRUNC(SYSDATE,'IW') AND invdate < TRUNC(SYSDATE,'IW') + 7 

日曜日、月曜日と比較

where invdate >= TRUNC(SYSDATE,'IW') AND invdate < TRUNC(SYSDATE,'IW') + 5 

注意。あなたは12月-25を起動週間比較している場合たとえば、それは範囲を比較する必要があり :25.12.2017 00:00:00 and 29.12.2017 23:59:59

DEMO

+0

ありがとうございます。それは働いた –

0

Oracleの翌日関数を参照してください...あなたのケースであなたは7と14を減算する必要がありますfxの結果から

関連する問題