SQL์์ SOQL๋ก ์ ํ
ํ์ต ๋ชฉํ
์ด ์ ๋์ ์๋ฃํ๋ฉด ๋ค์์ ์ํํ ์ ์์ต๋๋ค.
- Salesforce ๊ฐ์ฒด์ ์ด์ ์ ์ดํดํ ์ ์์ต๋๋ค.
- SQL๊ณผ SOQL์ ์ ์ฌ์ ๊ณผ ์ฐจ์ด์ ์ ์๋ณํ ์ ์์ต๋๋ค.
- Workbench๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋จํ SOQL ๋ฌธ์ ์์ฑํฉ๋๋ค.
- ๋์ฑ ๋ณต์กํ ๊ด๊ณ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํฉ๋๋ค.
- ์ง๊ณ๋ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํฉ๋๋ค.
Salesforce ๊ฐ์ฒด ์ดํดํ๊ธฐ
Salesforce Platform์ ๊ฐ๋ ฅํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฟ๋ง ์๋๋ผ, ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ ์ฝ๊ณ ๋น ๋ฅด๊ฒ ๋ง๋ค ์ ์๋ ๋ค์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. SQL Server๋ฅผ ์ฌ์ฉํด๋ณด์ จ์ผ๋ฏ๋ก ๋ฐ์ดํฐ๊ฐ ํ ์ด๋ธ๊ณผ ํ์ ์ ์ฅ๋๋ค๋ ์ฌ์ค์ ์๊ณ ๊ณ์ค ๊ฒ์ ๋๋ค. ๋ฐ๋ฉด Salesforce์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํฉ๋๋ค. ๊ฐ์ฒด๋ ํ ์ด๋ธ์์ ์ ๊ณต๋๋ ๋ชจ๋ ๊ธฐ๋ฅ์ ํฌํจํ๋ฉฐ, ๊ทธ๋ฌํ ๊ธฐ๋ฅ์ ๋์ฑ ๊ฐ๋ ฅํ๊ณ ์ ์ฉํ๊ฒ ๋ง๋๋ ์ถ๊ฐ ๊ฐ์ ์ฌํญ์ ์ ๊ณตํฉ๋๋ค. ๊ฐ ๊ฐ์ฒด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ด์ ํด๋นํ๋ ์ฌ๋ฌ ํ๋๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ๋ฐ์ดํฐ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ์ ํด๋นํ๋ ๊ฐ์ฒด์ ๋ ์ฝ๋์ ์ ์ฅ๋ฉ๋๋ค. ํ์ง๋ง ๊ทธ๊ฒ์ด ๋ค๊ฐ ์๋๋๋ค!
๊ฐ์ฒด์๋ ๋ค์์ ๋ ๊ฐ์ง ์ ํ์ด ์์ต๋๋ค.
-
๊ธฐ๋ณธ ๊ฐ์ฒด โ Salesforce์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณต๋๋ ๊ฐ์ฒด์
๋๋ค. ์ผ๋ถ ์ผ๋ฐ์ ์ธ CRM ๊ฐ์ฒด์๋ ๊ณ์ , ์ฐ๋ฝ์ฒ, ๊ธฐํ, ๋ฆฌ๋๊ฐ ํฌํจ๋ฉ๋๋ค.
-
์ฌ์ฉ์ ์ ์ ๊ฐ์ฒด โ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ณ ์ ํ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ธฐ ์ํด ์์ฑํ๋ ์ ๊ฐ์ฒด์
๋๋ค. ์ฌ์ฉ์ ์ ์ ๊ฐ์ฒด๋ ํ์ค ๊ฐ์ฒด๊ฐ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ ํ์ฅํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์ ํ ์ฌ๊ณ ๋ฅผ ์ถ์ ํ๋ ์ฑ์ ๋น๋ํ๋ ๊ฒฝ์ฐ ์ํ, ์ฃผ๋ฌธ ๋๋ ์ธ๋ณด์ด์ค๋ผ๋ ์ด๋ฆ์ ์ฌ์ฉ์ ์ ์ ๊ฐ์ฒด๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
์ง์ํ์ จ๋ฏ์ด, ๊ฐ์ฒด์๋ ํ ๊ฐ์ฒด์ ๋ ์ฝ๋๊ฐ ๋ค๋ฅธ ๊ฐ์ฒด์ ๋ ์ฝ๋์ ๊ด๋ จ๋๋ ๋ฐฉ์์ ์ ์ํ๋ ๊ด๊ณ ํ๋๊ฐ ํฌํจ๋ ์ ์์ต๋๋ค. ์ด๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ธฐ๋ณธ ๋ฐ ์ธ๋ถ ํค์ด์ง๋ง, ๊ทธ๋ณด๋ค ํจ์ฌ ๋ ์ ์ฐํ๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ ๋ชจ๋ธ์ ๋ ์ฝ๊ฒ โโ์ค๊ณํ๊ณ ๊ตฌํํ ์ ์์ต๋๋ค.
ํ์ค ๋๋ ์ฌ์ฉ์ ์ ์ 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) ์กฐ์ง์ ๊ฐ์ ํ ํ ๋ค์ ๋จ๊ณ๋ฅผ ์ํํ์ธ์.
- Setup(
) ๋ฉ๋ด์์ Developer Console์ ์ ํํ์ฌ Developer Console์ ์ฝ๋๋ค.
- ํ๋จ ์ฐฝ์์ Query Editor(์ฟผ๋ฆฌ ํธ์ง๊ธฐ) ํญ์ ํด๋ฆญํฉ๋๋ค.

- ๋ค์ ์ฟผ๋ฆฌ๋ฅผ ์
๋ ฅํฉ๋๋ค.
SELECT Id, Name, Type FROM Account
-
Execute(์คํ)๋ฅผ ํด๋ฆญํฉ๋๋ค.
์ฟผ๋ฆฌ ๊ฒฐ๊ณผ์๋ ์ธ ๊ฐ์ ์ด์ด ํฌํจ๋ฉ๋๋ค. ๊ฒฐ๊ณผ๋ฅผ ์คํฌ๋กคํฉ๋๋ค.
์ฟผ๋ฆฌ๋ ํ ์ด๋ธ์ด ์๋๋ผ ๊ฐ์ฒด์์ ํ๋๋ฅผ ๊ฐ์ ธ์จ๋ค๋ ์ ์ ๊ธฐ์ตํ์ธ์. ๋ฐ์ดํฐ๋ ๊ฐ์ฒด ๋ด๋ถ์ ์ ์ง๋ฉ๋๋ค. Salesforce Objects์์์ ๋ง์ฐฌ๊ฐ์ง๋ก, sObjects๋ผ๊ณ ๋ถ๋ฆฌ๋ฉฐ Salesforce Platform๊ณผ ๊ธด๋ฐํ๊ฒ ํตํฉ๋์ด ์๊ธฐ ๋๋ฌธ์ ์์ ์ด ์ฉ์ดํฉ๋๋ค.
์ฌ๊ธฐ์ ๋์ ์์์ Salesforce์ DateTime ํ๋๊ฐ SQL๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก SOQL์์๋ ๋ณต์กํ๊ณ ์์ ์ด ์ด๋ ต๋ค๋ ์ ์ ๋๋ค. ์ข์ ์์์ Salesforce๊ฐ SOQL์์์ ์์ ์ ๋ ํ๋ค๊ฒ ๋ง๋๋ ์ฌ๋ฌ ๋ ์ง ํจ์๋ฅผ ์ ๊ณตํ๋ค๋ ๊ฒ์ ๋๋ค. ๋ฌธ์๋ฅผ ์ดํด๋ณด๋ฉด์ SOQL์ด ํตํ ํ๋๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ํ์ธํ์ธ์. ํนํ ์ฌ๋ฌ ํตํ๋ฅผ ์ฒ๋ฆฌํ๋ ์กฐ์ง์ ๊ฒฝ์ฐ SOQL์ด ์ฝ๊ฐ ๋ค๋ฅผ ์ ์์ต๋๋ค.
๊ฒฐ๊ณผ ํํฐ๋ง
SOQL์์ ๋ ๊ฐ์ง ํ์ ์ ์ SELECT์ FROM์ ๋๋ค. WHERE ์ ์ ์ ํ ์ฌํญ์ ๋๋ค. ํ์ง๋ง ์ฌ๋ฌ๋ถ์ ๋น๋กฏํ ๋ฐ์ด๋ ๊ฐ๋ฐ์๋ผ๋ฉด ์์ฑํ๋ ๊ฑฐ์ ๋ชจ๋ ์ฟผ๋ฆฌ์ WHERE ์ ์ ํฌํจํ๊ณ ์ถ์ ๊ฒ์ ๋๋ค. ํ์ ์ด์์ ๋ฐ์ดํฐ๋ฅผ ๋ฐํํ๋ ๊ฒ์ ์๋ฏธ๊ฐ ์์ต๋๋ค.
๋ค์ ๋งํ์ง๋ง, Workbench๋ฅผ ์ฌ์ฉํ๋ฉด ์ด๋ฌํ ์๋ ๋ฐฉ์์ ๋งค์ฐ ์ฝ๊ฒ ํ์ธํ ์ ์์ต๋๋ค.
- Setup(
) ๋ฉ๋ด์์ Developer Console์ ์ ํํ์ฌ Developer Console์ ์ฝ๋๋ค.
- ํ๋จ ์ฐฝ์์ Query Editor(์ฟผ๋ฆฌ ํธ์ง๊ธฐ) ํญ์ ํด๋ฆญํฉ๋๋ค.
- ๋ค์ ์ฟผ๋ฆฌ๋ฅผ ์
๋ ฅํฉ๋๋ค.
SELECT AccountId, Email, Id, LastName FROM Contact
-
Execute(์คํ)๋ฅผ ํด๋ฆญํฉ๋๋ค.
์ด ์ฟผ๋ฆฌ๋ ์กฐ์ง์ ๋ชจ๋ ์ฐ๋ฝ์ฒ๋ฅผ ๋ฐํํฉ๋๋ค. ๊ฐ๋ฐ ์กฐ์ง์ ๊ฒฝ์ฐ ์ด ๋ชฉ๋ก์ด ์์ ์ ์์ต๋๋ค. ํ์ง๋ง ๋๋ถ๋ถ์ ์ค์ ์กฐ์ง์ ๊ฒฝ์ฐ ๋ฐํ๋ ์ฐ๋ฝ์ฒ ์๊ฐ ๋งค์ฐ ๋ง์ ์ ์์ผ๋ฏ๋ก ํญ์ WHERE ์ ์ ์ฌ์ฉํ์ฌ SOQL ์ฟผ๋ฆฌ๋ฅผ ํํฐ๋งํ๋ ๊ฒ์ ๊ณ ๋ คํด์ผ ํฉ๋๋ค. Apex ์ฝ๋์์ ์ฌ์ฉ๋ ๊ฒฝ์ฐ๋ ๋์ฑ ๊ทธ๋ ์ต๋๋ค.
- ๋ค์๊ณผ ๊ฐ์ด WHERE ์ ์ ์ถ๊ฐํด ์ฟผ๋ฆฌ๋ฅผ ์
๋ฐ์ดํธํฉ๋๋ค.
SELECT AccountId, Email, Id, LastName FROM Contact WHERE Email LIKE '%.net%'
-
Execute(์คํ)๋ฅผ ํด๋ฆญํฉ๋๋ค.
๋ฌด์จ ์ผ์ด ์ผ์ด๋ฌ๋์ง ๋์น์ฑ์
จ๋์? ๊ตฌ์ฑ๋ ์ฟผ๋ฆฌ์ contains ๋จ์ด๊ฐ ํฌํจ๋์ด ์์ง ์์ต๋๋ค. ๋์ ์ LIKE๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ํ ์ฟผ๋ฆฌ์๋ Email(์ด๋ฉ์ผ)์ด ํ
์คํธ ํ๋์ด๊ธฐ ๋๋ฌธ์ ํ์์ ์ธ ์์๋ฐ์ดํ, ๊ทธ๋ฆฌ๊ณ ์์ผ๋์นด๋ ๊ฒ์์์ ๋ํ๋ด๋ ์ ํ ๋ฐ ํํ ๋ฐฑ๋ถ์จ ๊ธฐํธ๊ฐ ํฌํจ๋ฉ๋๋ค.
์ฐธ๊ณ : ์์ผ๋์นด๋, ํนํ ์์ ์์ ๊ฐ์ด ์ ํ ๋ฐ ํํ ์์ผ๋์นด๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์ข์ ๊ดํ์ผ๋ก ๊ฐ์ฃผ๋์ง ์์ต๋๋ค. ์ดํ ์ ๋์์ ํจ์จ์ ์ธ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์ธํ ์์๋ณผ ์์ ์ด๋ฏ๋ก, ์ด๋ฌํ ์์ผ๋์นด๋ ๊ฒ์์ ๊ฐ๋ฅํ ํผํ์๊ธฐ ๋ฐ๋๋๋ค.
- ์ด๋ฒ์๋
ORDER BY์ ์ ์ฌ์ฉํด ๊ฒฐ๊ณผ๋ฅผ LastName์ผ๋ก ์ ๋ ฌํด ๋ณด์ธ์. ์ด์ ์ฟผ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.SELECT AccountId, Email, Id, LastName FROM ContactWHERE Email LIKE '%.net%' ORDER BY LastName ASC NULLS FIRST
-
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(์ฟผ๋ฆฌ ํธ์ง๊ธฐ) ํญ์ ์ฌ์ฉํฉ๋๋ค.
- Developer Console์ ํ๋จ ์ฐฝ์์ Query Editor(์ฟผ๋ฆฌ ํธ์ง๊ธฐ) ํญ์ ํด๋ฆญํฉ๋๋ค.
- ๋ค์ ์ฟผ๋ฆฌ๋ฅผ ์
๋ ฅํฉ๋๋ค.
SELECT FirstName, LastName, Account.Name FROM Contact
-
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 ์ฟผ๋ฆฌ๋ก ์ ํํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ด ์ค์ต ๋น๋์ค๋ฅผ ์ฐธ์กฐํ์ธ์.
์ด๋ฌํ ์ ํ์ ์ฟผ๋ฆฌ์ ๊ด๋ จํ์ฌ ์์์ผ ํ ๋งค์ฐ ์ค์ํ ์ฌํญ ํ ๊ฐ์ง๋ ์ ํ๊ธฐ๋ฒ์ ์ฌ์ฉํ์ฌ ๋ค์ฏ ๋จ๊ณ๋ฅผ ์ด๋ํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค. ์ฆ ํ์ ํญ๋ชฉ์์ ์์ ํญ๋ชฉ, ์ต์์ ํญ๋ชฉ ๋ฑ์ผ๋ก ์ด๋ํ ์ ์์ต๋๋ค.
์์-ํ์ ์ฟผ๋ฆฌ ์์ฑ
์์-ํ์ ์ฟผ๋ฆฌ๋ ๊ด๊ณ ์ด๋ฆ์ ์ฌ์ฉํ์ง๋ง, ์ค์ฒฉ ์ ํ ์ฟผ๋ฆฌ๋ผ๋ ์ด๋ฆ์ผ๋ก ์ฌ์ฉํฉ๋๋ค. ๋ง์ง๋ง ์ฟผ๋ฆฌ ์ ํ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก, ์ด๋ฒ์๋ ์๋ฅผ ๋ค์ด ์ค๋ช ํ๊ฒ ์ต๋๋ค.
์ด๋ฒ์๋ ์์ ๊ณ์ ๊ฐ์ฒด์์ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ๊ณ , ์ฐ๊ฒฐ๋ ๊ฐ ์ฐ๋ฝ์ฒ์ ๋ํ ์ ๋ณด๋ ๋ฐํํ๋ ์ค์ฒฉ ์ฟผ๋ฆฌ๋ฅผ ํฌํจํ๋๋ก ํด๋ณด๊ฒ ์ต๋๋ค.
- Developer Console์ ํ๋จ ์ฐฝ์์ Query Editor(์ฟผ๋ฆฌ ํธ์ง๊ธฐ) ํญ์ ํด๋ฆญํฉ๋๋ค.
- ๋ค์ ์ฟผ๋ฆฌ๋ฅผ ์
๋ ฅํฉ๋๋ค.
SELECT Name, (Select FirstName, LastName FROM Contacts) FROM Account
์ค์ฒฉ ์ฟผ๋ฆฌ ๋ด์ ๊ด๊ณ ์ด๋ฆ์ Contact๊ฐ ์๋๋ผ ๋ณต์ํ์ธContacts๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด๋ฌํ ์ธ๋ถ ์ฌํญ์ ์ดํดํ๋ ๊ฒ์ด ์ค์ํ๋ฉฐ, ์ด ๋ถ๋ฌธ์์ ๋ง์ ์ฌ๋๋ค์ด ์ค์๋ฅผ ํฉ๋๋ค. ๊ด๊ณ ์ฟผ๋ฆฌ์ ๋ํ ์์ ์ ์ํํ ๋ ์์-ํ์ ๊ด๊ณ ์ด๋ฆ์ ๋ณต์ํ ์ด๋ฆ์ด์ด์ผ ํฉ๋๋ค.
์ฌ์ฉ์ ์ ์ ๊ฐ์ฒด์ ๋ํ ์์ ์ ์ํํ ๋ ๊ด๊ณ ์ด๋ฆ์ ๋ณต์ํ์ผ ๋ฟ๋ง ์๋๋ผ, ๋ ๊ฐ์ ๋ฐ์ค๊ณผ r์ด ์ถ๊ฐ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด ์ฌ์ฉ์ ์ ์ ๊ฐ์ฒด My_Object__c์ ๊ด๊ณ ์ด๋ฆ์ My_Objects__r์ ๋๋ค.
-
Execute(์คํ)๋ฅผ ํด๋ฆญํฉ๋๋ค.
์ฟผ๋ฆฌ ๊ฒฐ๊ณผ์๋ ๋ ๊ฐ์ ์ด์ด ํฌํจ๋ฉ๋๋ค. ๋ค์ ์ด๋ฏธ์ง์์ Contacts(์ฐ๋ฝ์ฒ) ์ด ์๋์ ๊ฒฐ๊ณผ๊ฐ ์ด๋ป๊ฒ ํ์๋๋์ง ํ์ธํ์ธ์. ๊ฐ ๊ณ์ ์ ์ผ๋ฐ์ ์ผ๋ก ์ฌ๋ฌ ์ฐ๋ฝ์ฒ์ ์ฐ๊ฒฐ๋์ด ์์ผ๋ฏ๋ก ์ด๋ฆ๊ณผ ์ฑ์ JSON ํ์์ผ๋ก ํ์๋ฉ๋๋ค.

๋ค์ ํ๋ฒ, ๋์ผํ ์ฟผ๋ฆฌ๊ฐ 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 ๋ชฉ๋ก์ผ๋ก ๋ฐํํ๋ค๋ ๊ฒ์ ๋๋ค.
์ค์ ๋์ ๋ชจ์ต์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
- Developer Console์์ Query Editor(์ฟผ๋ฆฌ ํธ์ง๊ธฐ)๋ฅผ ํด๋ฆญํฉ๋๋ค.
- ๋ค์ ์ฟผ๋ฆฌ๋ฅผ ์
๋ ฅํฉ๋๋ค.
SELECT COUNT() FROM Account
-
Execute(์คํ)๋ฅผ ํด๋ฆญํฉ๋๋ค.
์ฟผ๋ฆฌ ๊ฒฐ๊ณผ์๋ ์์ ์ซ์๊ฐ ์๋ ์ด ํ ์๊ฐ ํ์๋ฉ๋๋ค.
- Query Editor(์ฟผ๋ฆฌ ํธ์ง๊ธฐ) ํญ์ผ๋ก ๋์์์ ์ฟผ๋ฆฌ๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ๋ณ๊ฒฝํฉ๋๋ค.
SELECT COUNT(Id) FROM Account
-
Execute(์คํ)๋ฅผ ํด๋ฆญํฉ๋๋ค.
์ด์ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ์๋ ๋ฐํ๋ ํ๊ณผ ์ด ๋ ์ฝ๋ ์๋ฅผ ํ์ํ๋ ์ด๋ง ํ์๋ฉ๋๋ค.
์ง๊ธ๊น์ง๋ SOQL ์ฟผ๋ฆฌ์์ ๋ฐํํ๋ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋ํด ๋ง์ด ์ด์ผ๊ธฐํ์ง ์์์ต๋๋ค. ํ์ง๋ง ๊ณ์ํด์ ๋ฏธ๋ฃฐ ์๋ ์์ต๋๋ค. ์ด์ ์ผ๋ถ ์ง๊ณ ๋ฐ์ดํฐ๋ฅผ ํตํด ๊ทธ์ ๋ํด ์์ธํ ์์๋ณด๊ฒ ์ต๋๋ค.
Apex์ ๋ํด ์ข๋ ์์ธํ ์ดํด๋ณด๊ฒ ์ง๋ง, ์์ง ์์ ํ ์ดํด๊ฐ ์ ๋๋๋ผ๋ ๊ฑฑ์ ํ์ง๋ ๋ง์ธ์. ๋์ค์ ์์ธํ ๋ค๋ฃฐ ์์ ์ ๋๋ค.
- Developer Console์์ Debug(๋๋ฒ๊ทธ)๋ฅผ ์ ํํด Open Execute Anonymous Window(์ต๋ช
์คํ ์ฐฝ ์ด๊ธฐ)๋ฅผ ์ ํํฉ๋๋ค.
- ๊ธฐ์กด ์ฝ๋๋ฅผ ๋ชจ๋ ์ญ์ ํ๊ณ ๋ค์ ์ฝ๋ ์กฐ๊ฐ์ ์ฝ์
ํฉ๋๋ค.GROUP BY ์ ๊ณผ ํจ๊ป ์ด๊ณ๋ฅผ ๋ํ๋ด๊ธฐ ์ํด ๋ณ์นญ์ ์ฌ์ฉํ ๋ฐฉ๋ฒ์ ์ฃผ๋ชฉํ์ธ์. SOQL์์๋ GROUP BY ์ ์ ์ฌ์ฉํ๋ ์ง๊ณ ์ฟผ๋ฆฌ์ ํ๋์๋ง ๋ณ์นญ์ ์ง์ ํ ์ ์์ต๋๋ค.
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')); }
- Open Log(๋ก๊ทธ ์ด๊ธฐ)๊ฐ ์ ํ๋์๋์ง ํ์ธํ๊ณ Execute(์คํ)๋ฅผ ํด๋ฆญํฉ๋๋ค.
์คํ ๋ก๊ทธ๋ฅผ ๋ณด์ฌ์ฃผ๋ ํญ์ด ๋ก๋๋ฉ๋๋ค.
- ๋ก๊ทธ์ ๋๋ฒ๊ทธ ๋ฌธ๋ง ํ์๋๋๋ก Debug Only(๋๋ฒ๊ทธ๋ง) ์ต์
์ ์ ํํฉ๋๋ค.
์ถ๊ฐ ์ ๋ณด
GROUP BY ์ ์ธ์๋ SOQL์ GROUP BY ROLLUP, GROUP BY CUBE, GROUPING ๋ฑ๊ณผ ๊ฐ์ ๋ค๋ฅธ ๊ทธ๋ฃนํ ์ ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ฌํ ์ ์ ์ฌ์ฉํ๋ฉด ์ฟผ๋ฆฌ๊ฐ ์ฌ๋ฌ ๊ด๋ จ ํ ์ด๋ธ์์ ๊ฐ์ ๋ฐํํ ๋ ๊ฒฐ๊ณผ๋ฅผ ๊ฐํธํ๊ฒ ๊ฒ์ฌํ ์ ์์ต๋๋ค. GROUP BY CUBE๋ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ์์ ๊ทธ๋ฃนํ๋ ํ๋์ ๋ชจ๋ ์กฐํฉ์ ๋ํ ์๊ณ๋ฅผ ์ถ๊ฐํ ์ ์๋ ์ ์ฉํ ์ ์ ๋๋ค. ์ด๋ฌํ ์ ์ ๋ํ ์์ธํ ๋ด์ฉ์ ๋ฆฌ์์ค ์น์ ์ GROUP BY ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
์ง๊ณ ํจ์๋ SQL Server์ HAVING ์ ๊ณผ ์ ์ฌํ ์ ํ์ HAVING ์ ๋ ์ง์ํ๋ฏ๋ก, ํธ์ํ ๋ง์์ผ๋ก ์์ ํ ์ ์์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์ง๊ณ ํจ์๊ฐ ๋ฐํํ๋ ๊ฒฐ๊ณผ๋ฅผ ํํฐ๋งํ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ฆฌ์์ค ์น์ ์ ์ฐธ์กฐํ์ธ์.
๋ฆฌ์์ค
- SOQL ๋ฐ SOSL ์ฐธ์กฐ: SOQL SELECT ๊ตฌ๋ฌธ
- SOQL ๋ฐ SOSL ์ฐธ์กฐ: Count ๋ฐ Count(fieldName)
- Apex ๊ฐ๋ฐ์ ๊ฐ์ด๋: SOQL ๋ฐ SOSL ์ฟผ๋ฆฌ
- SOQL ๋ฐ SOSL ์ฐธ์กฐ: GROUP BY