2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SQLパズル11 作業依頼 その2 HAVING句と特性関数を使った解法

Last updated at Posted at 2024-11-07

SQLパズル 11その2 HAVING句と特性関数を使った解法
解法1
https://qiita.com/RYA234/items/450e6c15aaca5b193718

要件

以下条件を満たす作業依頼IDを求めたい:
1.工程番号0が完了している(step_nbr=0 の step_status='C')
2.工程番号1~Nが未完了(サブクエリ部分)

解法

GROUP BYによってworkorder_id毎の部分集合が作成される。
作成された部分集合はHaving句を使って、条件指定される。

部分集合の件数=
[step_nbr=0 の step_status='C'の件数]+[step_nbr<>0 の step_status='W'の件数]

ベン図

image.png

Having句とcase文を理解している人にとっては可読性が高いSQL文だと思います。
(というより。解法1が難しかった><)

参考

SQLパズル 第二版 p46

達人に学ぶSQL徹底指南書第2版 p116 HAVING句の力 特性関数の応用

達人に学ぶSQL徹底指南書第2版 p293 7箇条
IF文やCASE文や、CASE式で置き換える。

SQLパズル サポートページ
https://mickindex.sakura.ne.jp/database/db_support_sqlpuzzle.html#LocalLink-p11

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?