カルテテーブルに登録されたデータから、
日時が2007-02-28以前で、
顧客ごとに一番古い(最初の)データのみを抽出し、
ショップ番号が1である顧客のみを、
絞り込みたいのですが、
教えてもらえますでしょうか?。
※顧客の一番古いデータがショップ1以外であれば省きたい。
※また、日付の期間中の抽出顧客ごとのカルテ数も知りたい。
(2回目以降は別の店舗とスタッフでもカウントする)
MySQL 4.0.24-standardを使用しています。
カルテテーブル(chart_table)
---------------------------------------
kokyaku | shop | staff | date |
1112006-06-27
1152006-12-11
2122007-01-27
2232007-02-07
3342007-02-04
1122007-03-12
結果1
---------------------------------------
kokyaku | shop | staff | date |
1112006-06-27
2122007-01-27
結果2
---------------------------------------
kokyaku | cnt |
12
22
何卒、よろしくお願い致します。
No.3
- 回答日時:
文章で説明されても、非常に分かりにくいです。
自分で考えたSQLは、全然ないのですか?課題の丸投げ、具体的に分からないところを示さない作業依頼は、ここでの違反行為ですよ?
結果1で得たkokyakuに関し、抽出期間は同じで、すべてのshopについて件数を知りたいということでしょうか?
参考URL:http://blog.goo.ne.jp/oshietegoo/c/2fd47a0436464 …
No.2
- 回答日時:
1回目のshopが1の顧客について来店回数をカウントする・・・
という意味でしょうか?
それならkokyaku=1の顧客は3回来店していますが、どのような計算根拠で
カウントは3ではなくて2なのですか?
(カルテ数っていうのがうまく説明されていないのかなぁ・・・)
それと結果1はやはりだめでしたか?
ご返信ありがとうございます。
ANo1を参考にさせて頂きテンポラリを3回重ねて思う結果を抽出出来ました。
無駄な問い合わせが多いですが、これ以上の方法が解りませんでした。泣!!
1回目のテンポラリ
---------------------------------------
CREATE TEMPORARY TABLE summary_table
SELECT * FROM chart_table
WHERE date <= 2007-02-28
ORDER BY date
2回目のテンポラリ
---------------------------------------
CREATE TEMPORARY TABLE summary_table1
SELECT kokyaku,staff,date,shop,
MIN(date) AS min_date,Count(date) AS cnt_date
FROM summary_table
GROUP BY kokyaku
ORDER BY date
3回目のテンポラリ
---------------------------------------
CREATE TEMPORARY TABLE summary_table1_2
SELECT staff,shop,Count(staff) AS cnt_staff,
Sum(CASE WHEN (cnt_date >= 2) THEN 1 ELSE 0 END) AS sum_repeater
FROM summary_table1
GROUP BY staff
後は、PHP上でリピート率を計算しました。
$staff_value = (($sum_repeater)/($cnt_staff))*100;
No.1ベストアンサー
- 回答日時:
mysql4.0はサブクエリがつかえないですよね?
そうなるとテンポラリに一度落とした上で、外部結合することになります。
create temporary table temp
select kokyaku,shop,min(date) as date
from chart_table
where 1
and shop=1
group by kokyaku;
select t.kokyaku,t.shop,c.staff,t.date
from temp as t
inner join chart_table as c
on c.date=t.date
and c.kokyaku=t.kokyaku
and c.shop=1
今回の課題・・・
もとのテーブルにIDになりそうなプライマリキーが設定されていないため
絞りこみが非常にしにくいです。
正規化を心がけてください。
ちなみに、簡単にやろうとすると
select kokyaku,shop,staff,min(date) as date
from chart_table
where 1
and shop=1
group by kokyaku;
なんて感じでできそうな気がしますが、これはstaffの項目が
保証されませんので、あやまりです。
それと、結果2はなにがやりたいのかいまいちわかりません。
shopが1の場合のkokyaku毎のカウントをとりたいのであれば
select kokyaku,count(*) as cnt
from chart_table
where 1
and shop=1
group by kokyaku;
ですが、結果は
kokyaku | cnt
1 3
2 1
ですよね?
よく仕様を再検討ください
この回答への補足
早いアドバイスありがとうございました。
また、説明不足ですみませんでした。
これは指定期間中のスタッフごとによる再来店率を表示させる
グラフを算出したいと思いまして質問致しました。
ですので、最初に対応したスタッフの顧客が2回目に、
他の店舗に行く事も考えて、事前に店舗を絞り込む事が出来ません。。。
また、過去の時点に於いての、計算ですので期間絞り込み中における、
抽出となります。
ですので、カウント結果2は
kokyaku | cnt
1 2
2 2
になります。
とてもややこしくてすみませんでした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Access IF文でテーブルに存在しない場合の処理について 2 2022/10/10 18:09
- Oracle 質問です。 下記のテーブルとデータがあり、 取得想定結果のように出力したいです。 下記のsqlだと0 2 2023/05/23 19:10
- Excel(エクセル) 【Excel】住所に郵便番号を付記する方法 3 2022/05/07 17:15
- Excel(エクセル) Excel 指定した固有番号で、複数の行を削除する方法は? 2 2022/03/30 15:18
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
- Visual Basic(VBA) SQLで抽出 4 2022/12/04 13:55
- Visual Basic(VBA) 指定月分の顧客データファイルを統合して並べ替え、所定の場所に貼り付ける 3 2022/09/10 07:55
- Access(アクセス) 対象月の2桁表示について 1 2023/01/07 05:08
- Excel(エクセル) 【詳しい方教えて下さい】EXCEL条件に一致する値の複数抽出 9 2022/04/29 10:56
- Excel(エクセル) Excelマクロの差分抽出のコードを教えていただきたいです。 2 2023/03/14 11:40
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PostgreSQLのtimestamp型で時間...
-
予約システムでの時間の設計に...
-
Access にて "mm:ss.0" 形式の ...
-
下記の問合せを行うクエリを、 ...
-
フラグをたてるってどういうこ...
-
【SQL】他テーブルに含まれる値...
-
データ削除とSQL*Loaderでのイ...
-
T-SQLで任意の箇所で強制終了す...
-
オラクルのUPDATEで複数テーブル
-
SELECT INTOで一度に複数の変数...
-
既存データをINSERT文にして出...
-
結合したテーブルをSUMしたい
-
右向き、左向きの速度が最大と...
-
SQLで、Join句で結合したテ...
-
エラーを起こす方法
-
平均値のもとめ方
-
UPDATEで既存のレコードに文字...
-
timestampのデータはどのように...
-
selectの単純繰り返し
-
ゼロ未満の場合で更新する場合
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PostgreSQLのtimestamp型で時間...
-
Access にて "mm:ss.0" 形式の ...
-
予約システムでの時間の設計に...
-
SELECT の仕方 (今月のデー...
-
MySQLで期間のUNIQUEってできま...
-
Excelの外部参照と書式設定につ...
-
該当レコードなしでエラーを発...
-
(SQL)かな・カナデータの並べ...
-
Wifi対応ではないプリンタをWif...
-
MS_ACCESSでINSTR関数を使いたい。
-
フラグをたてるってどういうこ...
-
SELECT INTOで一度に複数の変数...
-
【SQL】他テーブルに含まれる値...
-
sqlに記述できない文字
-
UPDATEで既存のレコードに文字...
-
テーブル名が可変の場合のクエ...
-
エラーを起こす方法
-
オラクルのUPDATEで複数テーブル
-
truncate tableを使って複数の...
-
結合したテーブルをSUMしたい
おすすめ情報