X



トップページDB@2ch掲示板
1002コメント294KB
SQL初心者質問スレ [無断転載禁止]©2ch.net
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001NAME IS NULL
垢版 |
2016/05/12(木) 05:29:07.61ID:HmbS4CfD
SQL初心者用の質問スレッドです。
0977NAME IS NULL
垢版 |
2017/07/07(金) 13:32:57.72ID:???
よろしくお願いします。
前任者が突然退職しました。
SQL初心者ですが業務を引く次ぐことになりました。
今、行き詰まってます。
次のようなテーブルが有ります。
table 出勤表(
社員番号 serial,
日付 date,
出勤時間 timestamp,
退勤時間 timestamp,
遅刻 boolean,
早退 boolean,
欠勤 boolean
)
ここである期間内の、例えば
where 日付 between '2017-05-01' and '2017-05-14'
内における社員それぞれの遅刻、早退、欠勤の【有無】を求めたいのです。
出力例)
社員番号 遅刻 早退 欠勤
10    F F T
11 F F F
12 T T F
のような。
色々試行錯誤していますが、まず、ある期間内に遅刻があったかどうか、というところからもう分かりません。
ヒントだけでもかまいません。
助けてください。
Postgresqlです。
0978NAME IS NULL
垢版 |
2017/07/07(金) 16:57:35.93ID:???
Postgresqlってboolean型にMAXとかMINとかとったらどうなる?

たとえば指定期間内の遅刻のMAXかMINとれば行けると思うけど
だめならCASEでTRUEのとき1、それ以外は0にしてSUMなりMAXなり取ればいけるんじゃね
0979NAME IS NULL
垢版 |
2017/07/07(金) 17:37:50.80ID:???
>>977
SELECT 社員番号,
SUM(CASE WHEN 遅刻 THEN 1 ELSE 0 END) > 0 as 遅刻,
SUM(CASE WHEN 早退 THEN 1 ELSE 0 END) > 0 as 早退,
SUM(CASE WHEN 欠勤 THEN 1 ELSE 0 END) > 0 as 欠勤
FROM 出勤表
WHERE 日付 BETWEEN '2017-05-01' AND '2017-05-14'
GROUP BY 社員番号
レス数が950を超えています。1000を超えると書き込みができなくなります。

ニューススポーツなんでも実況