AccountHistory
とAccessHistory
という2つのテーブルがあります。 AccountHistory
テーブルには、顧客がいつアクティベートされたかについての詳細が含まれています(1回のみ)。同様に、AccessHistory
テーブルには、顧客が当社のサイトにログインしたときの詳細(複数回)が含まれています。SQL - 2つの異なるテーブルの日付を使用した条件別グループ
AccountHistory:
ID HistoryDt CustomerID
-- --------- ----------
1 2016-01-02 1
2 2016-02-01 2
AccessHistory:
ID AccessDt CustomerID
-- --------- ----------
1 2016-01-02 1
2 2016-02-01 2
3 2016-02-05 2
4 2016-03-06 1
は、私は多くのnew
顧客が特定の月でサイトにログインする方法を示したレポートを生成するためのクエリを記述します。
たとえば、上記の表の例では、カスタマー2は2月にアクティベートし、彼は2回ログインしました。また、顧客1は1月に活動化され、3月にもログインしました。
私はSQLに新しいですので、だから、出力が
NewUsersAccess Month
------------- -----
1 1
2 2
0 3
だろう、私はこのようなサブクエリ使用して、粗クエリを書くことを考えることができます。
select COUNT(*) from AccessHistory
where CustomerID in
(select DISTINCT(CustomerID) from AccountHistory where HistoryDt > '2015-12-31'
and HistoryDt < '2016-02-01') and AccessDt > '2015-12-31'
and AccessDt < '2016-02-01'
をしかし、それだけでデータをフェッチすることができます月に一度に誰かがより良い選択肢を提案してもらえますか?
はい!これは私の問題を解決します。私は日付列として混乱していました。しかし、それを修正した後、私の問題を解決します。ありがとう! – nitinvertigo
@nitinvertigo。 。 。名前は私にも混乱させた(「アクセス」は朝の「アカウント」に似ている)。 'left join 'は、アクセステーブルではなく履歴テーブルから開始する必要があります。私はそれが今修正されたと思う。 –
名前を明確にして申し訳ありません.1つの小さな質問。顧客のアクセスの詳細のレコードが含まれているため、AccessHistoryテーブルから日付を取得するべきではありません。クエリの最初の行では、それはah.historyDtであり、グループでもath.HistoryDtです。私が間違っていれば私を修正してください。 – nitinvertigo