Skip to main content
์ƒˆ๋กœ์šด ์ปค๋ฎค๋‹ˆํ‹ฐ ๋Œ€ํ™”๋ฅผ Slack์œผ๋กœ ์ด์ „ํ•จ์— ๋”ฐ๋ผ ์˜จ๋ผ์ธ Trailblazer Community๋Š” 2026๋…„ 10์›” 30์ผ๋ถ€ํ„ฐ ์ฝ๊ธฐ ์ „์šฉ์œผ๋กœ ์ „ํ™˜๋ฉ๋‹ˆ๋‹ค. FAQ๋ฅผ ์ฝ์–ด๋ณด์‹ญ์‹œ์˜ค.

SQL์—์„œ SOQL๋กœ ์ „ํ™˜

ํ•™์Šต ๋ชฉํ‘œ

์ด ์œ ๋‹›์„ ์™„๋ฃŒํ•˜๋ฉด ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • Salesforce ๊ฐœ์ฒด์˜ ์ด์ ์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • SQL๊ณผ SOQL์˜ ์œ ์‚ฌ์ ๊ณผ ์ฐจ์ด์ ์„ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Workbench๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ„๋‹จํ•œ SOQL ๋ฌธ์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • ๋”์šฑ ๋ณต์žกํ•œ ๊ด€๊ณ„ ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • ์ง‘๊ณ„๋œ ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

Salesforce ๊ฐœ์ฒด ์ดํ•ดํ•˜๊ธฐ

Salesforce Platform์€ ๊ฐ•๋ ฅํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋” ์‰ฝ๊ณ  ๋น ๋ฅด๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. SQL Server๋ฅผ ์‚ฌ์šฉํ•ด๋ณด์…จ์œผ๋ฏ€๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ํ…Œ์ด๋ธ”๊ณผ ํ–‰์— ์ €์žฅ๋œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ๊ณ  ๊ณ„์‹ค ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด Salesforce์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๊ฐœ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ์ฒด๋Š” ํ…Œ์ด๋ธ”์—์„œ ์ œ๊ณต๋˜๋Š” ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ํฌํ•จํ•˜๋ฉฐ, ๊ทธ๋Ÿฌํ•œ ๊ธฐ๋Šฅ์„ ๋”์šฑ ๊ฐ•๋ ฅํ•˜๊ณ  ์œ ์šฉํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ์ถ”๊ฐ€ ๊ฐœ์„  ์‚ฌํ•ญ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ๊ฐœ์ฒด๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์—ด์— ํ•ด๋‹นํ•˜๋Š” ์—ฌ๋Ÿฌ ํ•„๋“œ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํ–‰์— ํ•ด๋‹นํ•˜๋Š” ๊ฐœ์ฒด์˜ ๋ ˆ์ฝ”๋“œ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ๊ฒƒ์ด ๋‹ค๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค!

๊ฐœ์ฒด์—๋Š” ๋‹ค์Œ์˜ ๋‘ ๊ฐ€์ง€ ์œ ํ˜•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ๊ธฐ๋ณธ ๊ฐœ์ฒด โ€” Salesforce์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณต๋˜๋Š” ๊ฐœ์ฒด์ž…๋‹ˆ๋‹ค. ์ผ๋ถ€ ์ผ๋ฐ˜์ ์ธ CRM ๊ฐœ์ฒด์—๋Š” ๊ณ„์ •, ์—ฐ๋ฝ์ฒ˜, ๊ธฐํšŒ, ๋ฆฌ๋“œ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.
  2. ์‚ฌ์šฉ์ž ์ •์˜ ๊ฐœ์ฒด โ€” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๊ณ ์œ ํ•œ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ์ƒ์„ฑํ•˜๋Š” ์ƒˆ ๊ฐœ์ฒด์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์ •์˜ ๊ฐœ์ฒด๋Š” ํ‘œ์ค€ ๊ฐœ์ฒด๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ์„ ํ™•์žฅํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ œํ’ˆ ์žฌ๊ณ ๋ฅผ ์ถ”์ ํ•˜๋Š” ์•ฑ์„ ๋นŒ๋“œํ•˜๋Š” ๊ฒฝ์šฐ ์ƒํ’ˆ, ์ฃผ๋ฌธ ๋˜๋Š” ์ธ๋ณด์ด์Šค๋ผ๋Š” ์ด๋ฆ„์˜ ์‚ฌ์šฉ์ž ์ •์˜ ๊ฐœ์ฒด๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ง์ž‘ํ•˜์…จ๋“ฏ์ด, ๊ฐœ์ฒด์—๋Š” ํ•œ ๊ฐœ์ฒด์˜ ๋ ˆ์ฝ”๋“œ๊ฐ€ ๋‹ค๋ฅธ ๊ฐœ์ฒด์˜ ๋ ˆ์ฝ”๋“œ์™€ ๊ด€๋ จ๋˜๋Š” ๋ฐฉ์‹์„ ์ •์˜ํ•˜๋Š” ๊ด€๊ณ„ ํ•„๋“œ๊ฐ€ ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ธฐ๋ณธ ๋ฐ ์™ธ๋ถ€ ํ‚ค์ด์ง€๋งŒ, ๊ทธ๋ณด๋‹ค ํ›จ์”ฌ ๋” ์œ ์—ฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์„ ๋” ์‰ฝ๊ฒŒ โ€‹โ€‹์„ค๊ณ„ํ•˜๊ณ  ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ‘œ์ค€ ๋˜๋Š” ์‚ฌ์šฉ์ž ์ •์˜ Salesforce ๊ฐœ์ฒด๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ๊ตฌ์กฐ๋ฅผ ์ œ๊ณตํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ์‚ฌ์šฉ์ž๊ฐ€ ํƒญ, ํŽ˜์ด์ง€์˜ ํ•„๋“œ ๋ ˆ์ด์•„์›ƒ, ๊ด€๋ จ ๋ ˆ์ฝ”๋“œ ๋ชฉ๋ก์„ ๋น„๋กฏํ•œ ๋ฐ์ดํ„ฐ์™€ ์ƒํ˜ธ ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค ์š”์†Œ๋ฅผ ๊ฐ•ํ™”ํ•ฉ๋‹ˆ๋‹ค. ํ‘œ์ค€ ๊ธฐ๋Šฅ์˜ ๊ฒฝ์šฐ ๊ฐœ์ฒด ๊ด€๊ณ„ ๋งคํ•‘(ORM)์„ ๊ตฌํ˜„ํ•˜๊ฑฐ๋‚˜, CRUDing ๋ฐ์ดํ„ฐ์šฉ UI๋ฅผ ์ž‘์„ฑํ•˜๊ฑฐ๋‚˜, ํ…Œ์ด๋ธ”์„ ๋นŒ๋“œํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ‘œ์ค€ ๊ธฐ๋Šฅ์€ ํ”Œ๋žซํผ์—์„œ ์ž๋™์œผ๋กœ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๊ฐœ์ฒด์—๋Š” ์•ก์„ธ์Šค ๊ด€๋ฆฌ, ํ™•์ธ, ์ˆ˜์‹ ๋ฐ ๊ธฐ๋ก ์ถ”์ ๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ์ง€์›์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ์ฒด์˜ ๋ชจ๋“  ์†์„ฑ์€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋กœ ์„ค๋ช…๋˜๋ฏ€๋กœ, ์‹œ๊ฐ์  ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ๋˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์œผ๋กœ ๋ ˆ์ฝ”๋“œ๋ฅผ ์‰ฝ๊ฒŒ ๋งŒ๋“ค๊ณ  ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ณด์‹œ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๊ฐœ์ฒด๋Š” ๋‹จ์ˆœํžˆ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ์ปจํ…Œ์ด๋„ˆ ๊ทธ ์ด์ƒ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๊ณ ์œ ํ•œ ๊ธฐ๋Šฅ์„ ๋นŒ๋“œํ•˜๋Š” ๋ฐ ์ดˆ์ ์„ ๋งž์ถ˜ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ ์ง‘ํ•ฉ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์ •์˜ ๊ฐœ์ฒด, ํ•„๋“œ, ๊ด€๊ณ„ ๋“ฑ์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง ๋ชจ๋“ˆ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์œ ์‚ฌ์ ๊ณผ ์ฐจ์ด์ 

.NET ๊ฐœ๋ฐœ์ž๋Š” SQL Server๋กœ ์ž‘์—…ํ•˜๋Š” ๋ฐ ๋งค์šฐ ์ต์ˆ™ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ SQL์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž„์‹œ ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์ž˜ ์•Œ๊ณ  ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ €ํฌ๋Š” Salesforce์šฉ์œผ๋กœ ํŠน๋ณ„ํžˆ ์„ค๊ณ„๋œ ์œ ์‚ฌ ์–ธ์–ด, ์ฆ‰ SOQL(Salesforce Object Query Language)์„ ์†Œ๊ฐœํ•˜๋Š” ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์€ ์ด ๋‘ ๊ฐ€์ง€๋ฅผ ๋น„๊ตํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ฐ€์žฅ ๋จผ์ € ์•Œ์•„์•ผ ํ•  ์‚ฌํ•ญ์€ ๋‘˜ ๋‹ค ์ฟผ๋ฆฌ ์–ธ์–ด์ด์ง€๋งŒ, SOQL์€ SELECT ๋ฌธ์œผ๋กœ ์ฟผ๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ์—๋งŒ ์‚ฌ์šฉ๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. SOQL์—๋Š” ์ƒ์‘ํ•˜๋Š” INSERT, UPDATE ๋ฐ DELETE ๋ฌธ์ด ์—†์Šต๋‹ˆ๋‹ค. Salesforce ํ™˜๊ฒฝ์—์„œ ๋ฐ์ดํ„ฐ ์กฐ์ž‘์€ DML(Data Manipulation Language)์ด๋ผ๋Š” ์ผ๋ จ์˜ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค. DML์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ž ์‹œ ํ›„์— ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ SOQL์ด ์ œ๊ณตํ•˜๋Š” SELECT ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ Salesforce ๋ฐ์ดํ„ฐ๋ฅผ ์ฟผ๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•๋งŒ ์•Œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๋ˆˆ์— ๋„๋Š” ํฐ ์ฐจ์ด์  ํ•œ ๊ฐ€์ง€๋Š” SOQL์—์„œ๋Š” SELECT *๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ์‹์ด ๋‹ค๋ฅด๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. SOQL์€ Salesforce ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ  ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋Š” ๋ชจ๋‘๊ฐ€ '๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ณต์œ 'ํ•˜๋Š” ์ผ์ข… ๋‹ค์ค‘ ํ…Œ๋„ŒํŠธ ํ™˜๊ฒฝ์— ์ƒ์ฃผํ•˜๊ธฐ ๋•Œ๋ฌธ์— *์™€ ๊ฐ™์€ ์™€์ผ๋“œ์นด๋“œ ๋ฌธ์ž๋Š” ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์†”์งํžˆ ๋งํ•ด์„œ, ์ƒˆ SQL ์ฟผ๋ฆฌ๋ฅผ ์‹œ์ž‘ํ•˜๊ณ  SELECT * FROM SOME-TABLE์— ์ž…๋ ฅํ•˜๋ฉด ๋˜๋ฏ€๋กœ ๋งค์šฐ ๊ฐ„ํŽธํ•˜๋ฉฐ, ์ด๋Š” ํ…Œ์ด๋ธ” ํ•„๋“œ ์ด๋ฆ„์„ ๋ชจ๋ฅผ ๋•Œ ํŠนํžˆ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ์ž‘์—…์€ ๊ณต์œ  ํ™˜๊ฒฝ์˜ ๋‹ค๋ฅธ ํ…Œ๋„ŒํŠธ์— ์‹ฌ๊ฐํ•œ ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ…Œ๋„ŒํŠธ ๊ตฌ์กฐ๋ฅผ ๋ณดํ˜ธํ•˜๊ณ  ํ•„๋“œ ์ˆ˜์ค€ ๋ณด์•ˆ ์ •์ฑ…์„ ์ค€์ˆ˜ํ•˜๊ธฐ ์œ„ํ•ด, SOQL์€ FIELDS() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๊ฐ€์ง„ ํ•„๋“œ๋งŒ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด SELECT FIELDS(ALL) FROM Account๋Š” Account ๊ฐœ์ฒด์— ๋Œ€ํ•ด ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ํ‘œ์ค€ ๋ฐ ์‚ฌ์šฉ์ž ์ •์˜ ํ•„๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

SOQL์—์„œ๋Š” ๋ฐ˜ํ™˜ํ•  ๊ฐ ํ•„๋“œ ์ด๋ฆ„์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์™ธ์—๋„ SOQL์ด ์ œ๊ณตํ•˜๋Š” SELECT ๋ฌธ์€ SQL๊ณผ ์œ ์‚ฌํ•˜๋ฏ€๋กœ, SOQL ์ฟผ๋ฆฌ ์ž‘์„ฑ์ด ๋งค์šฐ ์‰ฝ๋‹ค๋Š” ๊ฒƒ์„ ๊ณง ์•Œ๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ SQL๊ณผ SOQL์€ ์„œ๋กœ ๋น„์Šทํ•˜์ง€๋งŒ ๋™์ผํ•˜์ง€๋Š” ์•Š๋‹ค๋Š” ์ ์— ์œ ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. SOQL์€ SQL SELECT ๋ฌธ์ด ์ˆ˜ํ–‰ํ•˜๋Š” ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ ์ค‘ ์ผ๋ถ€๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ Salesforce Platform์—์„œ ์ด๋Ÿฌํ•œ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์ด ๋ชจ๋‘ ํ•„์š”ํ•œ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. SOQL์€ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์„ ๋งค์šฐ ์ต์ˆ™ํ•œ ๋ฐฉ์‹์œผ๋กœ ์ œ๊ณตํ•  ๋ฟ์ž…๋‹ˆ๋‹ค.

Developer Console๋กœ ์ฟผ๋ฆฌ ์ž‘์„ฑํ•˜๊ธฐ

SOQL ์ฟผ๋ฆฌ ์ž‘์„ฑ์€ ์–ด๋–ป๊ฒŒ ์‹œ์ž‘ํ•ด์•ผ ํ• ์ง€ ๊ถ๊ธˆํ•˜์‹ค ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•œ ๊ฐ€์ง€ ๊ฐ„ํŽธํ•œ ๋ฐฉ๋ฒ•์€ Salesforce Developer Console์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ €ํฌ๋Š” .NET ๊ฐœ๋ฐœ์ž๊ฐ€ ๋„๊ตฌ๋ฅผ ์–ผ๋งˆ๋‚˜ ์ข‹์•„ํ•˜๋Š”์ง€ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฐ•๋ ฅํ•œ ๋„๊ตฌ๋Š” ๊ด€๋ฆฌ์ž์™€ ๊ฐœ๋ฐœ์ž๊ฐ€ Salesforce API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์กฐ์ง์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. .NET ๊ฐœ๋ฐœ์ž๋ผ๋ฉด Visual Studio Code๋ฅผ ๋Šฅ์ˆ™ํ•˜๊ฒŒ ์‚ฌ์šฉ์‹ค ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ๋กœ์ปฌ ๋จธ์‹ ์—์„œ ์‚ฌ์šฉ์ž ์ •์˜ ๊ฐœ๋ฐœ ๋ฐ SOQL ๋นŒ๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” VS Code์šฉ Salesforce ํ™•์žฅ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋”์šฑ ํŽธ๋ฆฌํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ํ™•์žฅ ๊ธฐ๋Šฅ์€ ์ตœ์‹  ์†Œ์Šค ์ค‘์‹ฌ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•˜๋Š” Salesforce DX์™€ ๋ฐ€์ ‘ํ•˜๊ฒŒ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. Salesforce DX์— ๊ด€ํ•œ ์ƒ์„ธ ๋‚ด์šฉ์€ Salesforce DX ์‹œ์ž‘ํ•˜๊ธฐ ํŠธ๋ ˆ์ผ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ง€๊ธˆ์€ Developer Console์„ ์‚ฌ์šฉํ•˜์—ฌ SOQL ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐ ์ดˆ์ ์„ ๋งž์ถ”์ง€๋งŒ, ์‹œ๊ฐ„์ด ์žˆ๋‹ค๋ฉด Developer Console์„ ๋‘˜๋Ÿฌ๋ณด๋ฉฐ ์–ด๋– ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š”์ง€ ํ™•์ธํ•ด๋ณด์„ธ์š”. ๋งค์šฐ ๋งˆ์Œ์— ๋“œ์‹ค ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฌด๋ฃŒ Developer Edition (DE) ์กฐ์ง์— ๊ฐ€์ž…ํ•œ ํ›„ ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•˜์„ธ์š”.

  1. Setup() ๋ฉ”๋‰ด์—์„œ Developer Console์„ ์„ ํƒํ•˜์—ฌ Developer Console์„ ์—ฝ๋‹ˆ๋‹ค.
  2. ํ•˜๋‹จ ์ฐฝ์—์„œ Query Editor(์ฟผ๋ฆฌ ํŽธ์ง‘๊ธฐ) ํƒญ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
    Developer Console์—์„œ ์—ฐ ์ฟผ๋ฆฌ ํŽธ์ง‘๊ธฐ.
  1. ๋‹ค์Œ ์ฟผ๋ฆฌ๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
    SELECT Id, Name, Type FROM Account
  1. Execute(์‹คํ–‰)๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
    ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ์—๋Š” ์„ธ ๊ฐœ์˜ ์—ด์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ๋ฅผ ์Šคํฌ๋กคํ•ฉ๋‹ˆ๋‹ค.

์ฟผ๋ฆฌ๋Š” ํ…Œ์ด๋ธ”์ด ์•„๋‹ˆ๋ผ ๊ฐœ์ฒด์—์„œ ํ•„๋“œ๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค๋Š” ์ ์„ ๊ธฐ์–ตํ•˜์„ธ์š”. ๋ฐ์ดํ„ฐ๋Š” ๊ฐœ์ฒด ๋‚ด๋ถ€์— ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. Salesforce Objects์—์„œ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, sObjects๋ผ๊ณ  ๋ถˆ๋ฆฌ๋ฉฐ Salesforce Platform๊ณผ ๊ธด๋ฐ€ํ•˜๊ฒŒ ํ†ตํ•ฉ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ž‘์—…์ด ์šฉ์ดํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ๋‚˜์œ ์†Œ์‹์€ Salesforce์˜ DateTime ํ•„๋“œ๊ฐ€ SQL๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ SOQL์—์„œ๋„ ๋ณต์žกํ•˜๊ณ  ์ž‘์—…์ด ์–ด๋ ต๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ์ข‹์€ ์†Œ์‹์€ Salesforce๊ฐ€ SOQL์—์„œ์˜ ์ž‘์—…์„ ๋œ ํž˜๋“ค๊ฒŒ ๋งŒ๋“œ๋Š” ์—ฌ๋Ÿฌ ๋‚ ์งœ ํ•จ์ˆ˜๋ฅผ ์ œ๊ณตํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฌธ์„œ๋ฅผ ์‚ดํŽด๋ณด๋ฉด์„œ SOQL์ด ํ†ตํ™” ํ•„๋“œ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ํ™•์ธํ•˜์„ธ์š”. ํŠนํžˆ ์—ฌ๋Ÿฌ ํ†ตํ™”๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์กฐ์ง์˜ ๊ฒฝ์šฐ SOQL์ด ์•ฝ๊ฐ„ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ ํ•„ํ„ฐ๋ง

SOQL์—์„œ ๋‘ ๊ฐ€์ง€ ํ•„์ˆ˜ ์ ˆ์€ SELECT์™€ FROM์ž…๋‹ˆ๋‹ค. WHERE ์ ˆ์€ ์„ ํƒ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์—ฌ๋Ÿฌ๋ถ„์„ ๋น„๋กฏํ•œ ๋›ฐ์–ด๋‚œ ๊ฐœ๋ฐœ์ž๋ผ๋ฉด ์ž‘์„ฑํ•˜๋Š” ๊ฑฐ์˜ ๋ชจ๋“  ์ฟผ๋ฆฌ์— WHERE ์ ˆ์„ ํฌํ•จํ•˜๊ณ  ์‹ถ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•„์š” ์ด์ƒ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ์€ ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ, Workbench๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋Ÿฌํ•œ ์ž‘๋™ ๋ฐฉ์‹์„ ๋งค์šฐ ์‰ฝ๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. Setup() ๋ฉ”๋‰ด์—์„œ Developer Console์„ ์„ ํƒํ•˜์—ฌ Developer Console์„ ์—ฝ๋‹ˆ๋‹ค.
  2. ํ•˜๋‹จ ์ฐฝ์—์„œ Query Editor(์ฟผ๋ฆฌ ํŽธ์ง‘๊ธฐ) ํƒญ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  3. ๋‹ค์Œ ์ฟผ๋ฆฌ๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
    SELECT AccountId, Email, Id, LastName FROM Contact
  1. Execute(์‹คํ–‰)๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

์ด ์ฟผ๋ฆฌ๋Š” ์กฐ์ง์˜ ๋ชจ๋“  ์—ฐ๋ฝ์ฒ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ ์กฐ์ง์˜ ๊ฒฝ์šฐ ์ด ๋ชฉ๋ก์ด ์ž‘์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋Œ€๋ถ€๋ถ„์˜ ์‹ค์ œ ์กฐ์ง์˜ ๊ฒฝ์šฐ ๋ฐ˜ํ™˜๋œ ์—ฐ๋ฝ์ฒ˜ ์ˆ˜๊ฐ€ ๋งค์šฐ ๋งŽ์„ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํ•ญ์ƒ WHERE ์ ˆ์„ ์‚ฌ์šฉํ•˜์—ฌ SOQL ์ฟผ๋ฆฌ๋ฅผ ํ•„ํ„ฐ๋งํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Apex ์ฝ”๋“œ์—์„œ ์‚ฌ์šฉ๋œ ๊ฒฝ์šฐ๋Š” ๋”์šฑ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค.

  1. ๋‹ค์Œ๊ณผ ๊ฐ™์ด WHERE ์ ˆ์„ ์ถ”๊ฐ€ํ•ด ์ฟผ๋ฆฌ๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.
    SELECT AccountId, Email, Id, LastName FROM Contact WHERE Email LIKE '%.net%'
  1. Execute(์‹คํ–‰)๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚ฌ๋Š”์ง€ ๋ˆˆ์น˜์ฑ„์…จ๋‚˜์š”? ๊ตฌ์„ฑ๋œ ์ฟผ๋ฆฌ์— contains ๋‹จ์–ด๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋Œ€์‹ ์— LIKE๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์ฟผ๋ฆฌ์—๋Š” Email(์ด๋ฉ”์ผ)์ด ํ…์ŠคํŠธ ํ•„๋“œ์ด๊ธฐ ๋•Œ๋ฌธ์— ํ•„์ˆ˜์ ์ธ ์ž‘์€๋”ฐ์˜ดํ‘œ, ๊ทธ๋ฆฌ๊ณ  ์™€์ผ๋“œ์นด๋“œ ๊ฒ€์ƒ‰์ž„์„ ๋‚˜ํƒ€๋‚ด๋Š” ์„ ํ–‰ ๋ฐ ํ›„ํ–‰ ๋ฐฑ๋ถ„์œจ ๊ธฐํ˜ธ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ : ์™€์ผ๋“œ์นด๋“œ, ํŠนํžˆ ์œ„์˜ ์˜ˆ์™€ ๊ฐ™์ด ์„ ํ–‰ ๋ฐ ํ›„ํ–‰ ์™€์ผ๋“œ์นด๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์ข‹์€ ๊ด€ํ–‰์œผ๋กœ ๊ฐ„์ฃผ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ดํ›„ ์œ ๋‹›์—์„œ ํšจ์œจ์ ์ธ ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณผ ์˜ˆ์ •์ด๋ฏ€๋กœ, ์ด๋Ÿฌํ•œ ์™€์ผ๋“œ์นด๋“œ ๊ฒ€์ƒ‰์€ ๊ฐ€๋Šฅํ•œ ํ”ผํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

  1. ์ด๋ฒˆ์—๋Š” ORDER BY ์ ˆ์„ ์‚ฌ์šฉํ•ด ๊ฒฐ๊ณผ๋ฅผ LastName์œผ๋กœ ์ •๋ ฌํ•ด ๋ณด์„ธ์š”. ์ด์ œ ์ฟผ๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
    SELECT AccountId, Email, Id, LastName FROM ContactWHERE Email LIKE '%.net%' ORDER BY LastName ASC NULLS FIRST
  1. Execute(์‹คํ–‰)๋ฅผ ํด๋ฆญํ•˜์—ฌ ๊ฒฐ๊ณผ๋ฅผ ์ •๋ ฌ๋œ ๋ชฉ๋ก์œผ๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ์—์„œ ๊ฐ€์žฅ ๋ˆˆ์—ฌ๊ฒจ๋ณด์•„์•ผ ํ•  ํ•ญ๋ชฉ์€ AccountId ํ•„๋“œ์™€ Id ํ•„๋“œ์ž…๋‹ˆ๋‹ค. ์ด ๋‘ ID ํ•„๋“œ์—๋Š” ๊ณ„์ • ๋ฐ ์—ฐ๋ฝ์ฒ˜ ๋ ˆ์ฝ”๋“œ๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ ํ”Œ๋žซํผ์—์„œ ํ• ๋‹นํ•œ ๊ณ ์œ ํ•œ 18์ž ๋ฌธ์ž์—ด์ด ๋“ค์–ด ์žˆ์Šต๋‹ˆ๋‹ค. AccountId ํ•„๋“œ๋Š” ์ด ํŠน์ • ์—ฐ๋ฝ์ฒ˜๊ฐ€ ํ• ๋‹น๋œ ๊ณ„์ • ๋ ˆ์ฝ”๋“œ์™€ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค. SQL ์šฉ์–ด๋กœ๋Š” ์™ธ๋ถ€ ํ‚ค ๊ด€๊ณ„์ž…๋‹ˆ๋‹ค. Id ํ•„๋“œ๋Š” ์—ฐ๋ฝ์ฒ˜์™€ ๊ด€๋ จ๋ฉ๋‹ˆ๋‹ค. SQL ์šฉ์–ด๋กœ๋Š” ๊ธฐ๋ณธ ํ‚ค์ž…๋‹ˆ๋‹ค.

์™ธ๋ถ€ ํ‚ค ๊ด€๊ณ„์— ๋Œ€ํ•œ ์–˜๊ธฐ๊ฐ€ ๋‚˜์™”์œผ๋‹ˆ, ์ด์ œ SOQL์—์„œ ํ…Œ์ด๋ธ”์„ ์กฐ์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ๊ถ๊ธˆํ•˜์‹ค ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฒฐ๋ก ๋งŒ ๋งํ•˜์ž๋ฉด ์กฐ์ธํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. SOQL์—๋Š” ๋™๋“ฑํ•œ JOIN ์ ˆ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ฑฑ์ •ํ•˜์ง€ ๋งˆ์„ธ์š”. ์ด๋Š” ์žฅ์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์œผ๋‹ˆ๊นŒ์š”.

์„œ๋กœ ๋‹ค๋ฅธ ์กฐ์ธ ์œ ํ˜•

์ด ์–˜๊ธฐ๋ฅผ ๋“ค์–ด๋„ ๋†€๋ผ์ง€ ์•Š์œผ์‹œ๊ฒ ์ง€๋งŒ, Salesforce๋Š” ๊ฐœ์ฒด ๋˜๋Š” ํ…Œ์ด๋ธ”์„ ๊ฒฐํ•ฉํ•  ๋•Œ ์—ฌ๋Ÿฌ๋ถ„์ด ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์ด ์•ฝ๊ฐ„ ๋‹ค๋ฅด๊ฒŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. JOIN ์ ˆ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ…Œ์ด๋ธ”์„ ๊ฒฐํ•ฉํ•˜๋Š” ๋Œ€์‹ , ๊ด€๊ณ„ ์ฟผ๋ฆฌ๋ผ๊ณ  ํ•˜๋Š” ๊ฒƒ์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

"๊ด€๊ณ„ ์ฟผ๋ฆฌ๊ฐ€ ๋ญ์ฃ ?"๋ผ๊ณ  ์งˆ๋ฌธํ•˜๋Š” ์†Œ๋ฆฌ๊ฐ€ ๋“ค๋ฆฌ๋Š” ๊ฒƒ ๊ฐ™๊ตฐ์š”. ์ข‹์€ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค.

Salesforce๋Š” ์ƒ์œ„-ํ•˜์œ„ ๊ด€๊ณ„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‘ ๊ฐœ์ฒด๋ฅผ ๊ฒฐํ•ฉํ•ฉ๋‹ˆ๋‹ค. SQL๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, SOQL์€ ์™ธ๋ถ€ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋Ÿฌํ•œ ๋‘ ๊ฐœ์ฒด๋ฅผ ์—ฐ๊ฒฐํ•˜์ง€๋งŒ, SOQL์—์„œ๋Š” ์ฟผ๋ฆฌ ๊ตฌ๋ฌธ์ด ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์ฒ˜์Œ์—๋Š” ํ–‰ ๋Œ€์‹  ๊ฐœ์ฒด๋กœ ์ž‘์—…ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฌํ•œ ์ƒˆ ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์–ด์ƒ‰ํ•˜๊ฒŒ ๋А๊ปด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ธฐ๋ณธ ์‚ฌํ•ญ์„ ์ตํžˆ๊ณ  ๋‚˜๋ฉด SQL๋กœ ์ž‘์„ฑํ•˜๋Š” ์กฐ์ธ๋ณด๋‹ค ๊ด€๊ณ„ ์ฟผ๋ฆฌ ์ž‘์„ฑ์ด ํ›จ์”ฌ ์‰ฝ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

SOQL์—๋Š” ๊ธฐ์–ตํ•ด์•ผ ํ•  ๋‹ค์Œ์˜ ๋‘ ๊ฐ€์ง€ ๊ธฐ๋ณธ ๊ด€๊ณ„ ์ฟผ๋ฆฌ ์œ ํ˜•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • ํ•˜์œ„-์ƒ์œ„
  • ์ƒ์œ„-ํ•˜์œ„

์ด ๋‘˜์€ ์„œ๋กœ ๋‹ค๋ฅด๊ฒŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์žฅ ํ”ํ•˜๊ฒŒ ๊ฒฐํ•ฉ๋˜๋Š” ๊ณ„์ • ๋ฐ ์—ฐ๋ฝ์ฒ˜ ๊ฐœ์ฒด์— ๋Œ€ํ•œ ์ผ๋ถ€ ํ•„๋“œ๋ฅผ ์ด๋ฏธ ์‚ดํŽด๋ณด์•˜์œผ๋ฏ€๋กœ, ์ด ๋‘ ๊ฐ€์ง€๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์‚ฌํ•ญ์€ ๊ณ„์ •์ด ์ƒ์œ„ ํ•ญ๋ชฉ์ด๊ณ  ์—ฐ๋ฝ์ฒ˜๊ฐ€ ํ•˜์œ„ ํ•ญ๋ชฉ์ด๋ผ๋Š” ์ ์ž…๋‹ˆ๋‹ค.

ํ•˜์œ„-์ƒ์œ„ ์ฟผ๋ฆฌ ์ž‘์„ฑ

๊ณ„์ • ๋ฐ ์—ฐ๋ฝ์ฒ˜ ์ •๋ณด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์˜ต์…˜์€ ํ•˜์œ„-์ƒ์œ„ ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๊ด€๊ณ„ ์ฟผ๋ฆฌ๋Š” '์  ํ‘œ๊ธฐ๋ฒ•'์„ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ์œ„ ๋ฐ์ดํ„ฐ์— ์•ก์„ธ์Šคํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰ ๋งˆ์นจํ‘œ๋Š” ๊ด€๊ณ„ ์ด๋ฆ„์„ ์ฟผ๋ฆฌ ์ค‘์ธ ํ•„๋“œ์˜ ์ด๋ฆ„๊ณผ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.

์ž‘๋™ ๋ฐฉ์‹์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์—ฐ๊ฒฐ๋œ ๊ณ„์ •์˜ ์ด๋ฆ„์„ ๋น„๋กฏํ•œ ์—ฐ๋ฝ์ฒ˜ ๋ชฉ๋ก์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ด€๊ณ„ ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ณผ์ •์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋ฒˆ์—๋Š” Workbench๊ฐ€ ์•„๋‹ˆ๋ผ Developer Console์˜ Query Editor(์ฟผ๋ฆฌ ํŽธ์ง‘๊ธฐ) ํƒญ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  1. Developer Console์˜ ํ•˜๋‹จ ์ฐฝ์—์„œ Query Editor(์ฟผ๋ฆฌ ํŽธ์ง‘๊ธฐ) ํƒญ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  2. ๋‹ค์Œ ์ฟผ๋ฆฌ๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
    SELECT FirstName, LastName, Account.Name FROM Contact
  1. Execute(์‹คํ–‰)๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

์—ฌ์ „ํžˆ SQL ์šฉ์–ด๋กœ ์ƒ๊ฐํ•˜๊ณ  ๊ณ„์‹ค ๊ฒƒ์ด๋ฏ€๋กœ ๋‹ค์Œ์˜ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ๊ฐ€์ •ํ•ด๋ณด์„ธ์š”. ๊ณ„์ •๊ณผ ์—ฐ๋ฝ์ฒ˜๋ผ๋Š” ๋‘ ๊ฐœ์˜ SQL ํ…Œ์ด๋ธ”์ด ์žˆ๊ณ  ๋‘ ํ…Œ์ด๋ธ” ๊ฐ„์— ์ผ๋Œ€๋‹ค ๊ด€๊ณ„๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์ด์™€ ๋™์ผํ•œ ์ •๋ณด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” SQL ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ์š”?

๋ฌผ๋ก  ์กฐ์ธ์„ ์‚ฌ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด ์‚ฌ๋ก€์—์„œ๋Š” ์˜ค๋ฅธ์ชฝ ์™ธ๋ถ€ ์กฐ์ธ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ณ„์ •๊ณผ ๊ด€๋ จ์ด ์—†๋Š” ๊ฒƒ์„ ํฌํ•จํ•œ ๋ชจ๋“  ์—ฐ๋ฝ์ฒ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋™๋“ฑํ•œ ์ฟผ๋ฆฌ๋ฅผ ์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ชจ์Šต์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

SELECT c.FirstName, c.LastName, a.Name
FROM Account a
RIGHT JOIN Contact c ON (c.AccountId = a.Id)

์ด์ œ ๋‹ค์‹œ ๋Œ์•„๊ฐ€์„œ ์ด์— ์ƒ์‘ํ•˜๋Š” SOQL ์ฟผ๋ฆฌ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

SELECT FirstName, LastName, Account.Name FROM Contact

SOQL ์ฟผ๋ฆฌ๊ฐ€ ํ›จ์”ฌ ๊ฐ„๋‹จํ•ด ๋ณด์ด์ง€ ์•Š๋‚˜์š”?

์†”์งํžˆ ๋งํ•ด์„œ, ๊ด€๊ณ„ ์ฟผ๋ฆฌ๋Š” ๋•Œ๋•Œ๋กœ ๋‹ค์†Œ ๊นŒ๋‹ค๋กœ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์ •์˜ ๊ฐœ์ฒด์— ๋Œ€ํ•œ ๊ด€๊ณ„ ์ด๋ฆ„์„ ์•Œ์•„๋‚ด๋Š” ๊ฒฝ์šฐ์—๋Š” ๋”์šฑ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. SQL ์ฟผ๋ฆฌ๋ฅผ SOQL ์ฟผ๋ฆฌ๋กœ ์ „ํ™˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ด ์‹ค์Šต ๋น„๋””์˜ค๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์ด๋Ÿฌํ•œ ์œ ํ˜•์˜ ์ฟผ๋ฆฌ์™€ ๊ด€๋ จํ•˜์—ฌ ์•Œ์•„์•ผ ํ•  ๋งค์šฐ ์ค‘์š”ํ•œ ์‚ฌํ•ญ ํ•œ ๊ฐ€์ง€๋Š” ์  ํ‘œ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์„ฏ ๋‹จ๊ณ„๋ฅผ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฆ‰ ํ•˜์œ„ ํ•ญ๋ชฉ์—์„œ ์ƒ์œ„ ํ•ญ๋ชฉ, ์ตœ์ƒ์œ„ ํ•ญ๋ชฉ ๋“ฑ์œผ๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒ์œ„-ํ•˜์œ„ ์ฟผ๋ฆฌ ์ž‘์„ฑ

์ƒ์œ„-ํ•˜์œ„ ์ฟผ๋ฆฌ๋„ ๊ด€๊ณ„ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์ง€๋งŒ, ์ค‘์ฒฉ ์„ ํƒ ์ฟผ๋ฆฌ๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰ ์ฟผ๋ฆฌ ์œ ํ˜•๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, ์ด๋ฒˆ์—๋„ ์˜ˆ๋ฅผ ๋“ค์–ด ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด๋ฒˆ์—๋Š” ์ƒ์œ„ ๊ณ„์ • ๊ฐœ์ฒด์—์„œ ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•˜๊ณ , ์—ฐ๊ฒฐ๋œ ๊ฐ ์—ฐ๋ฝ์ฒ˜์— ๋Œ€ํ•œ ์ •๋ณด๋„ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ค‘์ฒฉ ์ฟผ๋ฆฌ๋ฅผ ํฌํ•จํ•˜๋„๋ก ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  1. Developer Console์˜ ํ•˜๋‹จ ์ฐฝ์—์„œ Query Editor(์ฟผ๋ฆฌ ํŽธ์ง‘๊ธฐ) ํƒญ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  2. ๋‹ค์Œ ์ฟผ๋ฆฌ๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
    SELECT Name, (Select FirstName, LastName FROM Contacts) FROM Account

    ์ค‘์ฒฉ ์ฟผ๋ฆฌ ๋‚ด์˜ ๊ด€๊ณ„ ์ด๋ฆ„์€ Contact๊ฐ€ ์•„๋‹ˆ๋ผ ๋ณต์ˆ˜ํ˜•์ธ Contacts๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋ฉฐ, ์ด ๋ถ€๋ฌธ์—์„œ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์‹ค์ˆ˜๋ฅผ ํ•ฉ๋‹ˆ๋‹ค. ๊ด€๊ณ„ ์ฟผ๋ฆฌ์— ๋Œ€ํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ์ƒ์œ„-ํ•˜์œ„ ๊ด€๊ณ„ ์ด๋ฆ„์€ ๋ณต์ˆ˜ํ˜• ์ด๋ฆ„์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    ์‚ฌ์šฉ์ž ์ •์˜ ๊ฐœ์ฒด์— ๋Œ€ํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ๊ด€๊ณ„ ์ด๋ฆ„์€ ๋ณต์ˆ˜ํ˜•์ผ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ๋‘ ๊ฐœ์˜ ๋ฐ‘์ค„๊ณผ r์ด ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์‚ฌ์šฉ์ž ์ •์˜ ๊ฐœ์ฒด My_Object__c์˜ ๊ด€๊ณ„ ์ด๋ฆ„์€ My_Objects__r์ž…๋‹ˆ๋‹ค.
  1. Execute(์‹คํ–‰)๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
    ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ์—๋Š” ๋‘ ๊ฐœ์˜ ์—ด์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ์ด๋ฏธ์ง€์—์„œ Contacts(์—ฐ๋ฝ์ฒ˜) ์—ด ์•„๋ž˜์˜ ๊ฒฐ๊ณผ๊ฐ€ ์–ด๋–ป๊ฒŒ ํ‘œ์‹œ๋˜๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”. ๊ฐ ๊ณ„์ •์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์—ฌ๋Ÿฌ ์—ฐ๋ฝ์ฒ˜์™€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ์ด๋ฆ„๊ณผ ์„ฑ์€ JSON ํ˜•์‹์œผ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

Developer Console์— ํ‘œ์‹œ๋˜๋Š” SOQL ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ

๋‹ค์‹œ ํ•œ๋ฒˆ, ๋™์ผํ•œ ์ฟผ๋ฆฌ๊ฐ€ SQL๋กœ ์ž‘์„ฑ๋˜๋Š” ๋ฐฉ์‹์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด ์ฟผ๋ฆฌ์˜ ๊ฒฝ์šฐ SQL ์ƒ์‘๋ฌผ์€ ๋‹ค์Œ๊ณผ ์œ ์‚ฌํ•œ ์™ผ์ชฝ ์™ธ๋ถ€ ์กฐ์ธ์ž…๋‹ˆ๋‹ค.

SELECT a.Name, c.FirstName, c.LastName FROM Account a LEFT JOIN Contact c ON (a.Id = c.AccountId)

SQL ์ฟผ๋ฆฌ๋Š” ๋ชจ๋“  ๊ณ„์ • ๋ ˆ์ฝ”๋“œ ๋ฐ ํ•ด๋‹น ๊ณ„์ •๊ณผ ์—ฐ๊ฒฐ๋œ ์—ฐ๋ฝ์ฒ˜๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. SQL์— ๋ฐ˜ํ™˜๋œ ์ถœ๋ ฅ์€ JSON ํ˜•์‹์ด ์•„๋‹™๋‹ˆ๋‹ค. ๊ทธ ์™ธ์—๋Š” SQL ๋ฐ SOQL ์ฟผ๋ฆฌ๊ฐ€ ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์ด ์‹œ์ ์—์„œ SOQL์ด ์•จ๋ฆฌ์–ด์‹ฑ์„ ์ง€์›ํ•˜๋Š”์ง€ ์—ฌ๋ถ€๊ฐ€ ๊ถ๊ธˆํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์•จ๋ฆฌ์–ด์‹ฑ์„ ์ง€์›ํ•˜์ง€๋งŒ, SQL์—์„œ ์ž‘์—…ํ•˜๋˜ ๋ฐฉ์‹๊ณผ๋Š” ๋‹ค๋ฆ…๋‹ˆ๋‹ค. SOQL์—๋Š” AS ํ‚ค์›Œ๋“œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋ณ„์นญ์„ ์‚ฌ์šฉํ•˜์—ฌ SOQL ์ฟผ๋ฆฌ์—์„œ ๊ฐœ์ฒด ์ด๋ฆ„์„ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์ง€๋งŒ, ํ•„๋“œ ์ด๋ฆ„์˜ ๊ฒฝ์šฐ ๋ณ„์นญ ์ง€์ •์€ ์ง‘๊ณ„ ์ฟผ๋ฆฌ์— ๋Œ€ํ•ด์„œ๋งŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•ด์„œ๋Š” ๋‹ค์Œ์— ๋‹ค๋ฃฐ ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

์ด ์ฃผ์ œ์— ๋Œ€ํ•ด ๋” ์ž์„ธํžˆ ์•Œ์•„๋ณด๋ ค๋ฉด ๋ฆฌ์†Œ์Šค ์„น์…˜์˜ ์‹ค์Šต ๋น„๋””์˜ค ๋งํฌ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์ง‘๊ณ„๋Š” ์–ด๋–ป๊ฒŒ ๋˜๋‚˜์š”?

SOQL์—๋„ ์ง‘๊ณ„๊ฐ€ ์žˆ์œผ๋ฉฐ ์˜ˆ์ƒํ•˜๋Š” ๋Œ€๋กœ ๊ฑฐ์˜ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๋งํ•˜์ž๋ฉด์š”. ์ง‘๊ณ„ ์ž‘์—…์— ๋Œ€ํ•ด ์•Œ์•„์•ผ ํ•  ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์ ์€ ๋Œ€๋ถ€๋ถ„์˜ ํ•จ์ˆ˜์—์„œ ๊ฒฐ๊ณผ๊ฐ€ AggregateResult ์œ ํ˜•์œผ๋กœ ๋ฐ˜ํ™˜๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

SOQL์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ•จ์ˆ˜๋Š” ์•„๋ž˜ ํ‘œ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ํ•จ์ˆ˜์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

SOQL ์ง‘๊ณ„ ํ•จ์ˆ˜

ํ•จ์ˆ˜

์„ค๋ช…

AVG()

์ˆซ์ž ํ•„๋“œ์˜ ํ‰๊ท  ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

COUNT() ๋ฐ COUNT(fieldName) ๋ฐ COUNT_DISTINCT()

์ฟผ๋ฆฌ ๊ธฐ์ค€๊ณผ ์ผ์น˜ํ•˜๋Š” ํ–‰ ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

MIN()

ํ•„๋“œ์˜ ์ตœ์†Œ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

MAX()

ํ•„๋“œ์˜ ์ตœ๋Œ€๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

SUM()

์ˆซ์ž ํ•„๋“œ์˜ ์ด ํ•ฉ๊ณ„๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

SQL์—์„œ Account๋ผ๋Š” ์ด๋ฆ„์˜ ํŠน์ • ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ๋ ˆ์ฝ”๋“œ ์ˆ˜๋ฅผ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด ๋‹ค์Œ์„ ์ž‘์„ฑํ•˜์„ธ์š”.

SELECT COUNT(*) FROM Account

SOQL์—์„œ ์ด์™€ ๋™์ผํ•œ ์ฟผ๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

SELECT COUNT() FROM Account

์„œ๋กœ ๋งค์šฐ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์ฐจ์ด์ ์€ ์‚ฌ์šฉํ•˜๋Š” count ํ•จ์ˆ˜์˜ ๋ฒ„์ „์— ๋”ฐ๋ผ ๋‹ค๋ฅธ๋ฐ, ์ด๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ํ•„๋“œ ์ด๋ฆ„์ด ์—†๋Š” COUNT ํ•จ์ˆ˜๋Š” ๋‹ค๋ฅธ ์ง‘๊ณ„ ํ•จ์ˆ˜ ์ด์ „์— ์‚ฌ์šฉ ๊ฐ€๋Šฅํ–ˆ๋˜ ์˜ˆ์ „ ๋ฒ„์ „์ž…๋‹ˆ๋‹ค. ์ด ๋ฒ„์ „์˜ ํ•จ์ˆ˜๋Š” ์ •์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ, SQL์—์„œ ์ œ๊ณต๋˜๋Š” count(*) ํ•จ์ˆ˜์™€ ๊ฐ€์žฅ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

Count(fieldName)๋Š” ํ–‰ ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ตœ์‹  ๋ฒ„์ „์œผ๋กœ, fieldName์— null์ด ์•„๋‹Œ ๊ฐ’์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ์ฐจ์ด์ ์€ ์ด๋Ÿฌํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋‹จ์ผ ๊ฐ’์ด ์•„๋‹Œ AggregateResults ๋ชฉ๋ก์œผ๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์‹ค์ œ ๋™์ž‘ ๋ชจ์Šต์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  1. Developer Console์—์„œ Query Editor(์ฟผ๋ฆฌ ํŽธ์ง‘๊ธฐ)๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  2. ๋‹ค์Œ ์ฟผ๋ฆฌ๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
    SELECT COUNT() FROM Account
  1. Execute(์‹คํ–‰)๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
    ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ์—๋Š” ์˜†์— ์ˆซ์ž๊ฐ€ ์žˆ๋Š” ์ด ํ–‰ ์ˆ˜๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
  2. Query Editor(์ฟผ๋ฆฌ ํŽธ์ง‘๊ธฐ) ํƒญ์œผ๋กœ ๋Œ์•„์™€์„œ ์ฟผ๋ฆฌ๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.
    SELECT COUNT(Id) FROM Account
  1. Execute(์‹คํ–‰)๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
    ์ด์ œ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ์—๋Š” ๋ฐ˜ํ™˜๋œ ํ–‰๊ณผ ์ด ๋ ˆ์ฝ”๋“œ ์ˆ˜๋ฅผ ํ‘œ์‹œํ•˜๋Š” ์—ด๋งŒ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

์ง€๊ธˆ๊นŒ์ง€๋Š” SOQL ์ฟผ๋ฆฌ์—์„œ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๋งŽ์ด ์ด์•ผ๊ธฐํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ณ„์†ํ•ด์„œ ๋ฏธ๋ฃฐ ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. ์ด์ œ ์ผ๋ถ€ ์ง‘๊ณ„ ๋ฐ์ดํ„ฐ๋ฅผ ํ†ตํ•ด ๊ทธ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Apex์— ๋Œ€ํ•ด ์ข€๋” ์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ฒ ์ง€๋งŒ, ์•„์ง ์™„์ „ํžˆ ์ดํ•ด๊ฐ€ ์•ˆ ๋˜๋”๋ผ๋„ ๊ฑฑ์ •ํ•˜์ง€๋Š” ๋งˆ์„ธ์š”. ๋‚˜์ค‘์— ์ž์„ธํžˆ ๋‹ค๋ฃฐ ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

  1. Developer Console์—์„œ Debug(๋””๋ฒ„๊ทธ)๋ฅผ ์„ ํƒํ•ด Open Execute Anonymous Window(์ต๋ช… ์‹คํ–‰ ์ฐฝ ์—ด๊ธฐ)๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  2. ๊ธฐ์กด ์ฝ”๋“œ๋ฅผ ๋ชจ๋‘ ์‚ญ์ œํ•˜๊ณ  ๋‹ค์Œ ์ฝ”๋“œ ์กฐ๊ฐ์„ ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค.
    List<AggregateResult> results  = [
        SELECT Industry, count(Id) total
        FROM Account GROUP BY Industry
    ];
    for(AggregateResult ar : results) {
        System.debug('Industry: ' + ar.get('Industry'));
        System.debug('Total Accounts: ' + ar.get('total'));
    }
    GROUP BY ์ ˆ๊ณผ ํ•จ๊ป˜ ์ด๊ณ„๋ฅผ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด ๋ณ„์นญ์„ ์‚ฌ์šฉํ•œ ๋ฐฉ๋ฒ•์— ์ฃผ๋ชฉํ•˜์„ธ์š”. SOQL์—์„œ๋Š” GROUP BY ์ ˆ์„ ์‚ฌ์šฉํ•˜๋Š” ์ง‘๊ณ„ ์ฟผ๋ฆฌ์˜ ํ•„๋“œ์—๋งŒ ๋ณ„์นญ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  1. Open Log(๋กœ๊ทธ ์—ด๊ธฐ)๊ฐ€ ์„ ํƒ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  Execute(์‹คํ–‰)๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
    ์‹คํ–‰ ๋กœ๊ทธ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ํƒญ์ด ๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค.
  2. ๋กœ๊ทธ์— ๋””๋ฒ„๊ทธ ๋ฌธ๋งŒ ํ‘œ์‹œ๋˜๋„๋ก Debug Only(๋””๋ฒ„๊ทธ๋งŒ) ์˜ต์…˜์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

์ถ”๊ฐ€ ์ •๋ณด

GROUP BY ์ ˆ ์™ธ์—๋„ SOQL์€ GROUP BY ROLLUP, GROUP BY CUBE, GROUPING ๋“ฑ๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ ๊ทธ๋ฃนํ™” ์ ˆ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ ˆ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ฟผ๋ฆฌ๊ฐ€ ์—ฌ๋Ÿฌ ๊ด€๋ จ ํ…Œ์ด๋ธ”์—์„œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•  ๋•Œ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ„ํŽธํ•˜๊ฒŒ ๊ฒ€์‚ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. GROUP BY CUBE๋Š” ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ์—์„œ ๊ทธ๋ฃนํ™”๋œ ํ•„๋“œ์˜ ๋ชจ๋“  ์กฐํ•ฉ์— ๋Œ€ํ•œ ์†Œ๊ณ„๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์šฉํ•œ ์ ˆ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ ˆ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋ฆฌ์†Œ์Šค ์„น์…˜์˜ GROUP BY ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์ง‘๊ณ„ ํ•จ์ˆ˜๋Š” SQL Server์˜ HAVING ์ ˆ๊ณผ ์œ ์‚ฌํ•œ ์„ ํƒ์  HAVING ์ ˆ๋„ ์ง€์›ํ•˜๋ฏ€๋กœ, ํŽธ์•ˆํ•œ ๋งˆ์Œ์œผ๋กœ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์ง‘๊ณ„ ํ•จ์ˆ˜๊ฐ€ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ํ•„ํ„ฐ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋ฆฌ์†Œ์Šค ์„น์…˜์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๋ฆฌ์†Œ์Šค

Salesforce ๋„์›€๋ง์—์„œ Trailhead ํ”ผ๋“œ๋ฐฑ์„ ๊ณต์œ ํ•˜์„ธ์š”.

Trailhead์— ๊ด€ํ•œ ์—ฌ๋Ÿฌ๋ถ„์˜ ์˜๊ฒฌ์— ๊ท€ ๊ธฐ์šธ์ด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด์ œ Salesforce ๋„์›€๋ง ์‚ฌ์ดํŠธ์—์„œ ์–ธ์ œ๋“ ์ง€ ์ƒˆ๋กœ์šด ํ”ผ๋“œ๋ฐฑ ์–‘์‹์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ ์˜๊ฒฌ ๊ณต์œ ํ•˜๊ธฐ