Tools/- SQL

[SQL] ์—ฐ์‚ฐ์ž | IN, & (AND ๋น„ํŠธ ์—ฐ์‚ฐ์ž) | ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์˜ˆ์ œ

์Šค์œ„๋ฏผ 2024. 3. 12. 17:35

 

๐Ÿ“Œ IN ์—ฐ์‚ฐ์ž

 

์—ฌ๋Ÿฌ ์กฐ๊ฑด ์ค‘ ํ•˜๋‚˜๋ผ๋„ ์ถฉ์กฑํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์‹ถ์„ ๋•Œ,

OR ์กฐ๊ฑด์„ ์—ฌ๋Ÿฌ ๊ฐœ ์ค„ ํ•„์š”์—†์ด,

IN ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•˜๋‚˜์˜ ๊ด„ํ˜ธ ์•ˆ์— ์กฐ๊ฑด์„ ๋‹ค ๋„ฃ์–ด์„œ ๋น„๊ต๊ฐ€๋Šฅํ•˜๋‹ค.

 

 

โœ๏ธ  ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค SQL ๋ฌธ์ œ๋กœ ์˜ˆ์‹œ๋ฅผ ๋“ค์–ด๋ณด์ž

SELECT ID, EMAIL, FIRST_NAME, LAST_NAME
FROM DEVELOPER_INFOS
WHERE SKILL_1 = 'Python' OR SKILL_2 = 'Python' OR SKILL_3 = 'Python' -- OR ์—ฌ๋Ÿฌ ๊ฐœ
ORDER BY ID

 

SELECT ID, EMAIL, FIRST_NAME, LAST_NAME
FROM DEVELOPER_INFOS
WHERE 'Python' IN (SKILL_1, SKILL_2, SKILL_3)
ORDER BY ID

 

์ฒซ๋ฒˆ์งธ๋Š” OR ์กฐ๊ฑด๋ฌธ์„ ์—ฌ๋Ÿฌ ๊ฐœ ์ž‘์„ฑํ•ด์„œ Skill 1, 2, 3 ์ค‘์— 'Python' ์ด ํ•˜๋‚˜๋ผ๋„ ์žˆ๋Š”์ง€๋ฅผ ์ฐพ์€ ๋ฐ˜๋ฉด์—

๋‘๋ฒˆ์งธ๋Š” IN() ์•ˆ์— ์กฐ๊ฑด Skill 1, 2, 3์„ ๋ชจ๋‘ ๋„ฃ์–ด ์ด ์ค‘ ํ•˜๋‚˜๋ผ๋„ ์žˆ๋Š”์ง€๋ฅผ ๋น„๊ตํ•˜์˜€๋‹ค.

 


 

๐Ÿ“Œ & ( AND ๋น„ํŠธ ์—ฐ์‚ฐ์ž)

 

๋น„ํŠธ๋ž€ ์ปดํ“จํŒ… ๋ฐ ๋””์ง€ํ„ธ ํ†ต์‹ ์˜ ์ •๋ณด๋‹จ์œ„๋‹ค. 2์ง„์ˆ˜(binary)๋กœ์จ 0๋˜๋Š” 1์˜ ๊ฐ’์„ ๊ฐ€์ง€๋ฉฐ ๋…ผ๋ฆฌ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

 

& ๋น„ํŠธ ์—ฐ์‚ฐ์ž๋Š” ์ž…๋ ฅ ์‹์— ์žˆ๋Š” ์–‘์ชฝ ๋น„ํŠธ์˜ ๊ฐ’์ด ๋ชจ๋‘ 1์ด๋ฉด 1๋กœ ์„ค์ •๋˜๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์€ ๋‚˜๋จธ์ง€ ๊ฒฝ์šฐ๋Š” 0์œผ๋กœ ์„ค์ •๋œ๋‹ค. 

------------------------

1, 1 → 1

1, 0 → 0

0, 1 → 0

0, 0 → 0

------------------------

 

์˜ˆ์‹œ) a = 170์ด๊ณ  b = 75์ผ ๋•Œ & ์—ฐ์‚ฐ์ž ์‚ฌ์šฉ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•ด๋ณด์ž

# a = 170
# b = 75

SELECT a_value & b_value
FROM bitwise;

 

 

 

SELECT CONV(a_value, 10, 2), CONV(b_value, 10, 2)
FROM bitwise;

 

170๊ณผ 75์˜ ์ด์ง„์ˆ˜

------------------------

10101010

01001011

→     1010

------------------------

 

 

โœ๏ธ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค SQL ๋ฌธ์ œ๋กœ ํ™œ์šฉ ์˜ˆ์ œ๋ฅผ ํ™•์ธํ•ด๋ณด์ž

 

skill_code๊ฐ€ front end์— ํ•ด๋‹นํ•˜๋Š” ๊ฐœ๋ฐœ์ž๋ฅผ ์ฐพ๋Š” ๋ฌธ์ œ์ด๋‹ค.

๋ฌธ์ œ ํฌ์ธํŠธ๋Š” skill_code๊ฐ€ 400  (=b'110010000')์ด 16 (=b'10000')์„ ํฌํ•จํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์ฝ”๋“œ์— ๋‚˜ํƒ€๋‚ด์•ผ ํ•œ๋‹ค.

 

select ID, EMAIL, FIRST_NAME, LAST_NAME
from DEVELOPERS
where SKILL_CODE & (select sum(CODE) from SKILLCODES where CATEGORY = 'Front End')
order by ID

 

์ •๋‹ต์€ ์ด๊ฑด๋ฐ ๋‚˜๋Š” ํ•œ์ฐธ์„ ์ฐพ์•„๋ณด๊ณ  ๊ณ ๋ฏผํ•ด๋ด์•ผ ๋๋‹ค.

1. & ๋น„ํŠธ ์—ฐ์‚ฐ์ž์— ๋Œ€ํ•ด ์•Œ์•„์•ผํ•˜๊ณ 

2. ๋ณดํ†ต where ์กฐ๊ฑด๋ฌธ์—๋Š” ~์ด๋‹ค/~์•„๋‹ˆ๋‹ค ๊ฐ™์€ ๋น„๊ต ์—ฐ์‚ฐ์ž๊ฐ€ ์˜ค๋Š”๋ฐ ์œ„ ์ฝ”๋“œ๋Š” ๊ฒฐ๊ณผ๊ฐ’์ด ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ๊ฐ€? ํ•˜๋Š” ์˜๋ฌธ์ด ๋“ค์—ˆ๋‹ค.

 

skill_code & ์„œ๋ธŒ์ฟผ๋ฆฌ๋Š” ๋น„ํŠธ AND ์—ฐ์‚ฐ์œผ๋กœ, skill_code์—์„œ ์„œ๋ธŒ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๊ฐ’์— ํ•ด๋‹นํ•˜๋Š” ๋น„ํŠธ๋งŒ ์ถ”์ถœํ•˜๋Š” ์—ฐ์‚ฐ์ด๋‹ค.

๊ฒฐ๋ก ์ ์œผ๋กœ, ๋น„ํŠธ ์—ฐ์‚ฐ์ž๊ฐ€ where ์กฐ๊ฑด๋ฌธ์— ์˜ฌ ๋•Œ,  ์กฐ๊ฑด 1 & ์กฐ๊ฑด 2 → 1 ์„ ์ถฉ์กฑํ•˜๋Š” skill_code๋ฅผ ๊ฐ€์ง„ ๊ฐœ๋ฐœ์ž๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ดํ•ดํ–ˆ๋‹ค.

Join์„ ์ด์šฉํ•œ ํ’€์ด ๋ฐฉ๋ฒ•๋„ ์žˆ๋˜๋ฐ ์ด ์ฝ”๋“œ๊ฐ€ ๋‚˜ํ•œํ…Œ๋Š” ์ข€ ๋” ์ง๊ด€์ ์œผ๋กœ ์ดํ•ด๊ฐ€ ๊ฐ”๋‹ค.

 


 

 

 

์ฐธ๊ณ  ์‚ฌ์ดํŠธ : https://learn.microsoft.com/ko-kr/sql/t-sql/language-elements/bitwise-and-transact-sql?view=sql-server-ver16

 

&(๋น„ํŠธ AND)(Transact-SQL) - SQL Server

&(๋น„ํŠธ AND)(Transact-SQL)

learn.microsoft.com

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฌธ์ œ : https://school.programmers.co.kr/learn/courses/30/lessons/276035