0

テーブル employee(id,dept_id,salary,hire_date,job_id) があります。次のクエリを実行する必要があります。

雇用された従業員が最も少ない曜日に雇用されたすべての従業員を表示します。

クエリを実行しましたが、少なくとも取得できません。正しいかどうかを確認してください。

          select id, WEEKDAY(hire_date)+1 as days,count(WEEKDAY(hire_date)+1) as count

           from test.employee  group by days
4

5 に答える 5

1

同じ最小数の従業員が雇用された複数の週日がある場合は、1つのレコードに制限されないため、これを試すことができます。実際にはそれは理にかなっています。以下はサンプルデータに基づいています。

クエリ:

-- find minimum id count
SELECT MIN(e.counts) INTO @min 
FROM (SELECT COUNT(*) as counts,
      WEEKDAY(hire_date+1) as day 
FROM employee
GROUP BY WEEKDAY(hire_date+1)) e
;

-- show weekdays with minimum id counts
SELECT e2.counts as mincount, 
WEEKDAY(e1.hire_date+1) as weekday
FROM employee e1
  JOIN (SELECT COUNT(id) as counts, 
        WEEKDAY(hire_date+1) as day
        FROM employee 
        GROUP BY day
        HAVING COUNT(*) = @min) e2
    ON WEEKDAY(e1.hire_date+1) = e2.day;

結果:

MINCOUNT    WEEKDAY
1           6
1           3
1           4
1           2
于 2012-11-26T06:52:04.977 に答える
1

これにより、雇用された従業員数が最も少ない平日が得られます。

SELECT 
   count(id) as `Total`,
   WEEKDAY(hire_date) as `DoW`
FROM
   test.employee
GROUP BY `DoW`
ORDER BY `Total` DESC LIMIT 1;
于 2012-11-26T05:09:00.447 に答える
1
select id from test.employee where hire_date in
    ( select count(id) count,hire_date 
      from test.employee
      order by count desc 
      limit 1)

これはうまくいくはずです

于 2012-11-26T05:13:25.580 に答える
0
select min(id), WEEKDAY(hire_date)+1 as days,count(WEEKDAY(hire_date)+1) as count

       from test.employee  group by days
于 2012-11-26T05:00:03.140 に答える
0
       SELECT
           *
         FROM
       employee
       WHERE
          DAYOFWEEK(hire_date)
         IN 
      (
             SELECT 
            weekday 
        FROM
           (
             SELECT 
        count(*) as bcount, 
        DAYOFWEEK(hire_date) as weekday 
    FROM 
        employee as a
    GROUP BY 
        weekday
    HAVING
        bcount = (
            SELECT 
                MIN(tcount)
            FROM
                (
                    SELECT 
                        count(*) as tcount, 
                        DAYOFWEEK(hire_date) as weekday 
                    FROM 
                        employee 
                    GROUP BY 
                        weekday

                ) as t
        )
    ) as q
于 2012-11-26T09:53:24.863 に答える