私は、営業担当者のために「リーダーボード」を作成するために使用しているサブクエリに比較的複雑なクエリを使用しています。問題は、プライマリデータがSale_Dateでフィルタリングされているのに対し、Install_Dateでフィルタリングされる列のうちの1つ(Installs列のみ)が必要なことです。私はMySQLワークベンチとサードパーティのビジネスインテリジェンスプラットフォームを使用して、データを提示可能な方法で出力しています。以下は私が現在行っていることの簡略化されたバージョンですが、明らかにうまくいかない、または私が望むものを私に与えてくれません。MySQLテーブルクエリにカラムを追加する
select `Rep`, `Sales`, `Passed Credit`, `Sales Scheduled`, Installs
from
(select Rep_Name as `Rep`, count(*) as `Sales`..., count(...) as `Sales Scheduled`
from ss.customers
left join ss.users
on customers.rep_id = users.id
where Sale_Date between curdate() - interval 6 day and curdate()
group by Rep_Name with rollup) cust,
(select Rep_Name, count(*) as `Installs`
from ss.customers
left join ss.installs
on customers.id = installs.id
left join ss.users
on customers.rep_id = users.id
where Install_Date between curdate() - interval 6 day and curdate()
group by Rep_Name) inst
order by `Sales` desc, `Passed Credit` desc, ..., `Installs` desc
私が手出力は、第1表「CUST」内のすべてのフィールドに対して正しいですが、私の担当者のすべてが最初はその1または20かクエリの後半に返されるカウント「インストール」と表示。
このような何かを返して:
Rep ----- Sales ----- Passed Credit ----- Sales Scheduled ----- Installs
John | 10 | 7 | 6 | 5
Mike | 8 | 7 | 6 | 5
Trey | 8 | 6 | 4 | 5
Drew | 6 | 3 | 3 | 5
Angel | 3 | 2 | 4 | 5
Total | 35 | 25 | 23 | 22
インストール表には、この週何の販売を持っていない一部の人々が含まれないが、彼らはまた、彼らはあるべき、ここに表示されていません。私が参加し、労働組合、そしてどこ文のいくつかのクレイジーな組み合わせを試してみた
Rep ----- Sales ----- Passed Credit ----- Sales Scheduled ----- Installs
John | 10 | 7 | 6 | 5
Mike | 8 | 7 | 6 | 9
Trey | 8 | 6 | 4 | 4
Drew | 6 | 3 | 3 | 4
Angel | 3 | 2 | 4 | 0
Tracy | 0 | 0 | 0 | 3
Diego | 0 | 0 | 0 | 1
Total | 35 | 25 | 23 | 26
:理想的には、これは表がどのように見えるかです。これを得る方法に関する他のアイデア?どんな助けもありがとう!
アップデート私は左結合を使用することにより、誤って表示「をインストールします」欄の私の問題を解決することができたspencer7593に1つの 感謝を。現在は週に0回の販売で担当者を表示する作業を行っていますが、インストールは過去数週間で完了しています。私たちのCRMデータベースが異なるものを表す別のテーブルで同じ名前の複数の列を台無しです知っ
Customers - rep_id, Sale_Date, id, Passed_Credit, Sale_Scheduled
Users - id (which is customers.rep_id), Rep_Name, Rep_Office_Location
Installs - id (which is customers.id), Install_Date, Install_Status
:私は前に含めるのを忘れていることを記載されているテーブルに対して
必要な予選フィールド。私はそれをデザインしていないし、それは私が平均時間のために生きなければならないものです。
あなたは素晴らしいです。特定のテーブルに列を限定しないようにして、推測の仕事をあなたに任せてくれたことを謝罪します。しかし、あなたは実際にそれらの大部分を正しいものにすることができました。まもなく私の元の記事をここで更新します。左の結合はまさに私が必要としたものでした。私はまだ、その週の売上0で、担当者にテーブルを作成させる作業をしています。 sale_dateはss.usersの参照列ではないため、現在、結合の結果を出力の下に追加するための組合を試しています。もう少し私はあなたとポストを更新します。 – Andrew
Salesの「ゼロ」カウントを取得するには、Driving TableをすべてのRep_Nameを持つテーブルにし、関連するSalesを持つテーブルに対してLEFT JOINを実行します。販売日の述語(条件)を 'WHERE'節ではなく' ON'節に置きます。 – spencer7593