MySQL 5のMONTHNAME()に関する問題

mysql sql

データベースでレポートを作成しようとしています。 私達は1ヶ月あたりの企業ごとの新しい登録を知りたいと思います。 私はこのクエリを書きました:

new_registrationsとしてCOUNT(j.jobseeker_id)、Industry_nameとしてi.description、jとしてtb_jobseeker、iとしてtb_industryから、WHERE YEAR(j.created_at)= 2009、およびi.industry_id = j.industry_id GROUP BY i MONTHNAME(j.created_at)= MONTHNAME(NOW()); .description、MONTHNAME(j.created_at)

このクエリを実行すると、空の結果セットが表示されます。 ただし、次のように実行したとします。

new_registrationsとしてCOUNT(j.seeker_id)を、Industry_nameとしてi.description、jとしてtb_seekerからi、tb_industryからWHERE YEAR(j.created_at)= 2009およびi.industry_id = j.industry_id GROUP BY i .description、MONTHNAME(j.created_at)HAVING MONTHNAME(j.created_at)= '6月';

探している結果が返されます。

何か助けてください? 私は困惑しています。

更新:クエリは毎月末または前月の次の月の初めに実行されます。 だから、私たちは今6月にいますが、それは5月に実行する必要があります。 それが理にかなっていることを願っています。

  1  0


ベストアンサー

なにが:

SELECT MONTHNAME(今すぐ())

サーバーに戻りますか?

2


エラー…​. メイO_oじゃない

次のように書くと、クエリははるかに効率的になります。

new_registrationsとしてCOUNT(j.jobseeker_id)、Industry_nameとしてi.description、jとしてtb_jobseeker、iとしてtb_industryのいずれかを選択します。j.created_at '2009-05-01'および '2009-05-31' AND i.industry_id = j.industry_id i.descriptionによるグループ化、MONTH(j.created_at)

絶対に持っている場合のみ、HAVINGを使うべきです。

i.descriptionの代わりにi.idでグループ化できればさらに良いでしょうが、それはi.descriptionが一意かどうかによって異なります。

1


この問い合わせはもっとよく書くことができます:

new_registrationsとしてCOUNT(j.jobseeker_id)、Industry_nameとしてi.description、jとしてtb_jobseeker、iとしてtb_industryのいずれかに、どこに(j.created_at)= YEAR(NOW())およびMONTH(j.created_at) )=月(今())AND i.industry_id = j.industry_id i.industry_idによるグループ化

“HAVING”句はグループ化後に適用されます。集計結果に基づいてフィルタをかけたい場合は、これを適用します(たとえば、先月100人以上が応募したすべての業種を取得します)。 Industry_idによるグループ化(これを主キーとします)は、文字列によるグループ化(industry_nameとmonthname)よりも高速です。 そして最後に、1か月だけを選択している場合は、月ごとにグループ化する必要はありません。

ただし、実際の今月の情報がテーブルにあると仮定すると、正しいデータを取得するはずです。

0


タイトルとURLをコピーしました