ホームページ  >  に質問  >  本文

11 日間連続して出勤していない従業員を取得する

<p>11 日間連続して出勤をマークしていない従業員をデータベースから取得しようとしています。 このために、従業員テーブルと出席テーブルがありますが、これに関する問題は、出席テーブルにレコードがないため、どうすれば </p> を取得できるかということです。 <p>多くのクエリを試しましたが、その一部は次のとおりです。 </p> <pre class="brush:php;toolbar:false;">SELECT e.name、e.full_name FROMタブ社員e 左結合 ( 選択する 従業員、従業員 MIN(出席日) AS 最初の出席日 タブから出席 GROUP BY 従業員 ) ar ON e.name = ar.employee WHERE ar.first_attendance_date が NULL または 存在しない ( 選択1 タブから出席 WHERE 従業員 = e.name AND 出席日 >= ar.first_attendance_date AND 出席日 < DATE_ADD(ar.first_attendance_date、間隔 11 日) )</pre> <p>別のクエリ:</p> <pre class="brush:php;toolbar:false;">SELECT e.name, COUNT(a.`attendance_date`), COUNT(e.`name`) from tabEmployee e LEFT JOIN タブ出席 a ON e.name = a.`employee` WHERE a.`employee` は NULL GROUP BY e.`name`</pre> <p><br /></p>
P粉103739566P粉103739566428日前450

全員に返信(1)返信します

  • P粉231079976

    P粉2310799762023-08-19 07:58:16

    LAG() 分析関数を使用して、次のことを試すことができます:

    リーリー

    ここでの基本戦略は、CTE の出席日のラグ (以前の連続値) を生成することです。その後、11 日以上の空白期間がある従業員のみを報告します。

    返事
    0
  • キャンセル返事