노션 습관 트래커로 매일 독서하기, 걷기, 정리하기처럼 꾸준히 실천하고 싶은 습관을 기록해 볼까요?
습관을 기록하다 보면 처음에는 세 가지만 관리하다가 나중에 운동이나 스트레칭을 추가하고 싶어질 수 있습니다.
그런데 새로운 습관을 추가하면서 기존 달성률까지 달라진다면 과거 기록을 비교하기 어려워집니다.
노션에서는 각 날짜에 관리하던 습관의 개수를 별도로 기록해 이러한 문제를 줄일 수 있습니다.
이번 글에서는 새로운 습관을 추가해도 기존 월별 달성률의 계산 기준을 유지하는 노션 습관 트래커를 만들어 보겠습니다.
완성하면 다음 기능을 사용할 수 있습니다.
- 읽기·걷기·정리 등 매일 실천한 습관 체크하기
- 하루에 실천한 습관의 비율 계산하기
- 월별 습관 달성률 확인하기
- 새로운 습관을 추가하면서 과거 목표 개수 보존하기
- 연도가 바뀌어도 지난달 기록 유지하기
- 날짜 누락과 잘못된 월 연결 확인하기
- 목표수 오류나 중복 기록으로 달성률이 달라지는 문제 점검하기
이번 실습에서는 노션 무료 플랜의 한국어 웹 환경에서 실제로 기록표를 제작했습니다.
특히 습관을 세 개에서 네 개로 늘렸을 때 2026년 12월의 달성률은 55.56%로 유지되고, 새로운 기록이 추가된 2027년 1월의 달성률은 58.33%에서 62.50%로 변경되는 것을 확인했습니다.
2026년 12월과 2027년 1월의 날짜 및 습관 기록은 모두 기능 검증을 위한 가상 데이터입니다.
넓은 표·수식·이미지는 해당 영역을 좌우로 넘겨 볼 수 있습니다. 이미지를 누르면 큰 화면으로 열립니다.
1. 완성된 노션 습관 트래커 살펴보기
먼저 완성된 기록표의 계산 결과를 살펴보겠습니다.
이번에 만든 기록표는 하루에 실천한 습관을 체크하면 월별 달성률을 계산하는 구조입니다.
최종 결과는 다음과 같습니다.
| 월 | 기록한 날짜 수 | 실천한 습관 수 | 목표 습관 수 | 달성률 |
|---|---|---|---|---|
| 2026년 12월 | 3일 | 5개 | 9개 | 55.56% |
| 2027년 1월 | 5일 | 10개 | 16개 | 62.50% |
여기서 ‘실천한 습관 수’는 체크한 항목의 합계입니다.
‘목표 습관 수’는 각 기록에서 실천하기로 정한 습관의 개수를 모두 더한 값입니다.
예를 들어 하루에 습관 세 개를 관리하고, 세 가지 중 두 가지를 실천했다면 그날의 달성률은 다음과 같습니다.
2 ÷ 3 × 100 = 66.67%
매일 기록한 값을 월별로 합산하면 해당 월의 달성률도 계산할 수 있습니다.
다만 이번 기록장에서 사용하는 달성률은 실제로 등록한 기록을 기준으로 계산한 비율입니다.
12월의 경우 12월 29일부터 31일까지 사흘만 기록했습니다.
따라서 12월 1일부터 28일까지의 미기록 날짜는 분모에 포함되지 않습니다.
한 달 전체 날짜를 대상으로 실천율을 계산하는 방식과는 다르므로 이 점을 먼저 이해하는 것이 좋습니다.
2. 습관 기록표에 데이터베이스가 두 개 필요한 이유
이번 실습에서는 데이터베이스 두 개를 사용했습니다.
첫 번째는 ‘일별습관’입니다.
매일 날짜를 입력하고 실천한 습관을 체크하는 곳입니다.
두 번째는 ‘월별요약’입니다.
해당 월의 기록을 모아 달성률을 계산하는 곳입니다.
두 데이터베이스는 노션의 ‘관계형’ 기능으로 연결합니다.
예를 들어 2026년 12월 29일에 작성한 기록을 2026-12라는 월에 연결하면 해당 월의 합계에 반영할 수 있습니다.
이렇게 분리하는 이유는 매일 체크하는 기록과 월별 결과를 확인하는 화면의 역할이 다르기 때문입니다.
물론 하나의 데이터베이스에서도 날짜별로 습관을 체크할 수 있습니다.
하지만 이번에는 서로 다른 목표 개수가 적용된 기록을 월별로 합산하고, 과거 계산 기준까지 보존하는 것이 목표이므로 두 데이터베이스를 연결해 구성했습니다.
새 페이지 만들기
노션에서 새 페이지를 생성합니다.
이번 실습에서는 다음 이름을 사용했습니다.
차근툴 실습 — 월별 습관 기록표
페이지 본문에서 표 형식의 데이터베이스를 두 개 만듭니다.
데이터베이스 이름은 다음과 같이 지정합니다.
- 일별습관
- 월별요약
처음에는 하나씩 만들어 속성을 설정하면 됩니다.
3. 일별습관 데이터베이스 설정하기
먼저 매일 사용하는 ‘일별습관’ 데이터베이스부터 만들겠습니다.
완성된 데이터베이스에는 다음 13개의 속성이 있습니다.
| 속성 이름 | 유형 | 용도 |
|---|---|---|
| 기록명 | 제목 | 날짜별 기록 구분 |
| 날짜 | 날짜 | 습관을 실천한 날짜 |
| 읽기 | 체크박스 | 독서 실천 여부 |
| 걷기 | 체크박스 | 걷기 실천 여부 |
| 정리 | 체크박스 | 정리 실천 여부 |
| 스트레칭 | 체크박스 | 나중에 추가할 네 번째 습관 |
| 목표수 | 숫자 | 해당 날짜의 목표 습관 개수 |
| 체크수 | 수식 | 실제로 체크한 습관 개수 |
| 일별달성률 | 수식 | 하루 달성률 계산 |
| 기록월표시 | 수식 | 날짜를 연도·월 형식으로 표시 |
| 요약월 | 관계형 | 월별요약 데이터베이스 연결 |
| 입력점검 | 수식 | 날짜 및 목표수 오류 확인 |
| 메모 | 텍스트 | 필요한 설명 기록 |
이번 실습에서는 처음부터 네 가지 습관을 모두 사용하지 않았습니다.
우선 읽기, 걷기, 정리 세 개의 체크박스를 만들었습니다.
‘스트레칭’은 기존 기록이 완성된 다음 추가했습니다.
이렇게 하면 새로운 습관이 추가되기 전과 후의 계산 결과를 직접 비교할 수 있습니다.
목표수가 중요한 이유
이번 기록장에서 가장 중요한 속성은 ‘목표수’입니다.
처음 세 가지 습관을 관리할 때는 목표수에 3을 입력합니다.
나중에 네 번째 습관을 추가한 날짜에는 목표수에 4를 입력합니다.
예를 들어 다음과 같습니다.
| 날짜 | 관리한 습관 | 목표수 |
|---|---|---|
| 2026-12-29 | 읽기·걷기·정리 | 3 |
| 2026-12-30 | 읽기·걷기·정리 | 3 |
| 2027-01-04 | 읽기·걷기·정리 | 3 |
| 2027-01-05 | 읽기·걷기·정리·스트레칭 | 4 |
목표수를 날짜별로 보관하면 나중에 관리할 습관이 늘어나더라도 과거 기록에 적용했던 기준을 유지할 수 있습니다.
단, 이 방식이 과거 데이터를 수정할 수 없도록 잠그는 것은 아닙니다.
과거 기록의 목표수를 직접 변경하면 과거 달성률도 변경될 수 있습니다.
4. 월별요약 데이터베이스 만들기
두 번째 데이터베이스의 최종 속성은 다음 여덟 가지입니다. 연결기록은 다음 절에서 양방향 관계형을 만들 때 생성하므로, 여기서 별도로 만들지 않습니다. 롤업과 수식은 관계형을 연결한 뒤 8절과 14절의 순서로 설정하세요.
| 속성 이름 | 유형 | 용도 |
|---|---|---|
| 월 | 제목 | 2026-12처럼 연도·월 구분 |
| 월시작일 | 날짜 | 해당 월의 첫날 |
| 연결기록 | 관계형 | 연결된 일별습관 기록 |
| 기록수 | 롤업 | 연결된 기록 개수 |
| 달성수 | 롤업 | 체크한 습관 수의 합계 |
| 목표합계 | 롤업 | 목표 습관 수의 합계 |
| 기록일기준달성률 | 수식 | 달성수 ÷ 목표합계 |
| 집계상태 | 수식 | 기록 유무 구분 |
우선 다음 두 개의 월을 등록합니다.
| 월 | 월시작일 |
|---|---|
| 2026-12 | 2026-12-01 |
| 2027-01 | 2027-01-01 |
월 이름에는 반드시 연도를 함께 넣는 것이 좋습니다.
단순히 ’12월’, ‘1월’이라고만 작성하면 해가 바뀌었을 때 기록을 구분하기 어려울 수 있기 때문입니다.
이제 두 데이터베이스를 연결하겠습니다.
5. 관계형으로 날짜별 기록과 월별 요약 연결하기
일별습관 데이터베이스에서 새 속성을 추가합니다.
속성 이름은 요약월, 유형은 ‘관계형’으로 지정합니다.
연결할 데이터베이스로 ‘월별요약’을 선택합니다.
이번 실습에서는 다음과 같이 설정했습니다.
- 연결 대상: 월별요약
- 제한: 1개 페이지
- 양방향 관계형: 켜기
- 반대쪽 관계형 이름: 연결기록
‘1개 페이지’로 제한하는 이유
하루의 기록을 여러 달에 동시에 연결하지 않기 위해서입니다.
예를 들어 2026년 12월 29일 기록은 이번 기록장에서 2026년 12월에만 연결되어야 합니다.
실제로 관계형을 1개 페이지로 제한한 상태에서 다른 월을 선택하자 기존 연결이 교체되는 것을 확인했습니다.
그렇다고 날짜와 월 연결이 자동으로 일치하는 것은 아닙니다.
날짜를 입력해도 요약월은 자동으로 연결되지 않습니다.
2026년 12월 29일 기록이라면 요약월 속성에서 2026-12를 직접 선택해야 합니다.
이 점은 가계부나 다른 관계형 데이터베이스를 사용할 때도 주의할 부분입니다.
이번 습관 기록표에서는 날짜와 요약월을 사용자가 각각 입력하는 방식으로 구성했습니다.
6. 체크한 습관의 개수 계산하기
이제 실제로 실천한 습관을 숫자로 계산하겠습니다.
처음에는 읽기·걷기·정리 세 가지 습관만 사용합니다.
각 체크박스는 체크한 상태와 체크하지 않은 상태를 나타냅니다.
노션의 toNumber() 함수를 이용하면 체크한 값을 1로, 체크하지 않은 값을 0으로 계산할 수 있습니다.
예를 들어 다음과 같습니다.
- 읽기: 체크 → 1
- 걷기: 체크 → 1
- 정리: 미체크 → 0
세 값을 더하면 체크수는 2입니다.
체크수 수식
일별습관 데이터베이스에 ‘체크수’라는 수식 속성을 만듭니다.
처음 세 가지 습관만 사용할 때는 다음과 같이 계산합니다.
toNumber(prop("읽기")) + toNumber(prop("걷기")) + toNumber(prop("정리"))
이번 실습에서는 초기 세 습관의 체크수 합계를 계산한 뒤, 나중에 네 번째 습관을 추가하면서 수식을 확장했습니다.
아래 수식은 10절에서 스트레칭 체크박스를 추가한 뒤 적용합니다. 지금은 위의 세 가지 습관 수식을 유지하세요. 최종적으로 검증한 수식은 다음과 같습니다.
toNumber(prop("읽기")) + toNumber(prop("걷기")) + toNumber(prop("정리")) + if(prop("목표수") == 4, toNumber(prop("스트레칭")), 0)
최종 수식에서 중요한 부분은 다음 조건입니다.
if(prop("목표수") == 4, toNumber(prop("스트레칭")), 0)
목표수가 4일 때만 스트레칭 체크 여부를 계산에 포함합니다.
목표수가 3이라면 스트레칭은 체크수에 더하지 않습니다.
즉, 새로운 체크박스가 생겼다고 해서 과거의 모든 기록을 네 가지 습관 기준으로 계산하지 않습니다.
다만 이 수식은 이번 예제의 고정된 세 가지 습관에서 네 가지로 확장하는 경우를 위한 것입니다.
다섯 번째 습관을 추가하거나 기존 습관을 삭제하는 상황까지 자동으로 처리하지는 않습니다.
7. 일별 습관 달성률 계산하기
다음으로 ‘일별달성률’이라는 수식 속성을 추가합니다.
실제로 사용한 수식은 다음과 같습니다.
if(prop("목표수") <= 0, 0, prop("체크수") / prop("목표수"))
이 수식은 체크수를 목표수로 나눕니다.
예를 들어 세 가지 습관 중 두 가지를 실천했다면 다음과 같습니다.
2 ÷ 3 = 0.6666…
노션에서 결과를 퍼센트로 표시하도록 설정하면 66.67%로 확인할 수 있습니다.
퍼센트 표시 설정
이번 실습에서는 수식 속성의 숫자 형식을 다음과 같이 지정했습니다.
숫자 형식 → 비율(%) → 소수점 이하 자리 → 2
여기서 수식의 결과는 숫자입니다.
format() 함수로 퍼센트 기호를 붙여 텍스트로 변환하지 않았습니다.
그래야 나중에 월별 합계나 평균 같은 숫자 계산을 수행할 수 있습니다.
다만 목표수에 올바른 숫자가 입력되어야 계산 결과를 정상적으로 해석할 수 있습니다.
목표수가 0이나 빈값이라면 별도로 점검해야 합니다.
이번 실습에서 목표수에 명시적으로 0을 입력했을 때는 0.00%가 표시됐지만, 빈값일 때는 일별달성률이 공란으로 표시됐습니다.
따라서 빈 목표수가 항상 0%로 표시된다고 설명해서는 안 됩니다.
입력점검 수식 추가하기
일별습관의 수식 속성 입력점검에 다음 수식을 입력합니다. 실제 실습에서 사용한 원문입니다.
if(not(or(prop("목표수") == 3, prop("목표수") == 4)), "목표수 확인", if(empty(prop("날짜")), "날짜 누락", ""))
목표수가 3 또는 4가 아니면 ‘목표수 확인’, 목표수가 정상인데 날짜가 비어 있으면 ‘날짜 누락’을 표시합니다. 두 오류가 겹치면 목표수 경고가 먼저 표시됩니다. 이 수식은 요약월 누락·잘못된 월 연결·중복 날짜를 감지하거나 오류 기록을 집계에서 제외하지는 않습니다.
8. 월별 달성률 계산하기
이제 날짜별 기록을 모아 월별 달성률을 계산하겠습니다.
먼저 월별요약 데이터베이스에서 롤업 속성 세 개를 설정합니다.
① 기록수
‘기록수’는 해당 월에 연결된 일별습관 기록이 몇 개인지 계산합니다.
설정은 다음과 같습니다.
- 관계형: 연결기록
- 대상 속성: 기록명
- 계산: 수 → 모두 세기
② 달성수
‘달성수’는 연결된 기록의 체크수 합계를 계산합니다.
- 관계형: 연결기록
- 대상 속성: 체크수
- 계산: 추가 옵션 → 합계
③ 목표합계
‘목표합계’는 연결된 기록의 목표수를 모두 더합니다.
- 관계형: 연결기록
- 대상 속성: 목표수
- 계산: 추가 옵션 → 합계
이렇게 하면 각 월의 기록수, 달성수, 목표합계를 확인할 수 있습니다.
④ 기록일기준달성률
마지막으로 ‘기록일기준달성률’이라는 수식 속성을 만듭니다.
실제로 적용한 수식은 다음과 같습니다.
if(prop("목표합계") <= 0, 0, prop("달성수") / prop("목표합계"))
숫자 형식은 일별달성률과 마찬가지로 비율(%)과 소수점 두 자리로 설정합니다.
이번 기록장에서 월별 달성률은 다음과 같이 정의합니다.
월별 달성률 = 연결된 기록의 체크수 합계 ÷ 연결된 기록의 목표수 합계 × 100
여기에는 중요한 제한이 있습니다.
관계형으로 연결된 모든 기록의 숫자를 합산하므로, 잘못된 목표수가 입력된 기록도 자동으로 제외되지 않습니다.
따라서 월별 합계를 확인하기 전에 입력값과 연결된 월이 정확한지 점검해야 합니다.
9. 세 가지 습관으로 기록한 초기 달성률
이제 실제 예제 데이터를 입력해 보겠습니다.
이번 실습에서는 처음 일곱 날짜에 읽기·걷기·정리 세 가지 습관을 기록했습니다.
| 기록 | 날짜 | 읽기 | 걷기 | 정리 | 체크수 | 목표수 |
|---|---|---|---|---|---|---|
| H01 | 2026-12-29 | O | O | X | 2 | 3 |
| H02 | 2026-12-30 | O | X | O | 2 | 3 |
| H03 | 2026-12-31 | X | O | X | 1 | 3 |
| H04 | 2027-01-01 | O | O | O | 3 | 3 |
| H05 | 2027-01-02 | O | X | X | 1 | 3 |
| H06 | 2027-01-03 | X | O | X | 1 | 3 |
| H07 | 2027-01-04 | O | X | O | 2 | 3 |
O는 체크, X는 미체크를 의미합니다.
각 기록의 요약월도 직접 선택했습니다.
H01~H03은 2026-12에 연결했습니다.
H04~H07은 2027-01에 연결했습니다.
그 결과는 다음과 같았습니다.
| 월 | 기록수 | 달성수 | 목표합계 | 달성률 |
|---|---|---|---|---|
| 2026-12 | 3 | 5 | 9 | 55.56% |
| 2027-01 | 4 | 7 | 12 | 58.33% |
12월은 세 날짜에 각각 세 가지 습관을 관리했습니다.
따라서 목표합계는 9입니다.
실천한 습관은 모두 다섯 개이므로 달성률은 다음과 같습니다.
5 ÷ 9 × 100 = 55.56%
1월에는 네 날짜의 목표합계가 12이고 체크수는 7입니다.
따라서 초기 달성률은 다음과 같습니다.
7 ÷ 12 × 100 = 58.33%
여기까지가 새로운 습관을 추가하기 전의 기록입니다.
10. 새로운 습관을 추가하면 과거 달성률도 바뀔까?
이번 글의 핵심입니다.
기존에는 읽기·걷기·정리 세 가지 습관만 관리했습니다.
2027년 1월 5일부터 스트레칭을 새로 시작한다고 가정하겠습니다.
이제 관리할 습관은 네 가지입니다.
그러나 과거 날짜까지 모두 네 가지 습관을 실천하기로 했던 것은 아닙니다.
따라서 과거 기록의 목표수를 일괄적으로 4로 바꾸지 않는 것이 중요합니다.
① 스트레칭 체크박스 추가
일별습관 데이터베이스에 ‘스트레칭’이라는 체크박스 속성을 추가합니다.
앞에서 설명한 최종 체크수 수식이 아직 적용되지 않았다면 네 번째 습관을 반영하는 수식으로 교체합니다.
목표수가 4인 경우에만 스트레칭을 체크수에 포함하는 수식입니다.
② 새로운 날짜 기록 추가
2027년 1월 5일 기록을 새로 만듭니다.
이번 예제에서는 H08이라는 기록명을 사용했습니다.
입력값은 다음과 같습니다.
| 항목 | 값 |
|---|---|
| 날짜 | 2027-01-05 |
| 읽기 | 체크 |
| 걷기 | 체크 |
| 정리 | 미체크 |
| 스트레칭 | 체크 |
| 목표수 | 4 |
| 요약월 | 2027-01 |
실제로 입력한 결과 체크수는 3이었습니다.
일별달성률은 다음과 같이 계산됐습니다.
3 ÷ 4 × 100 = 75.00%
③ 월별 달성률 다시 확인하기
H08을 추가한 뒤 월별요약을 확인했습니다.
1월의 기록수는 기존 4개에서 5개로 늘어났습니다.
체크수 합계는 7에서 10으로 증가했습니다.
목표합계도 12에서 16으로 증가했습니다.
따라서 1월 달성률은 다음과 같습니다.
10 ÷ 16 × 100 = 62.50%
그렇다면 12월은 어떻게 됐을까요?
| 월 | 새로운 습관 추가 전 | 추가 후 |
|---|---|---|
| 2026년 12월 | 55.56% | 55.56% |
| 2027년 1월 | 58.33% | 62.50% |
12월의 55.56%는 그대로 유지됐습니다.
기존 12월 기록들의 목표수가 모두 3으로 보존되어 있었기 때문입니다.
이번 실습에서는 새로운 습관을 추가한 뒤에도 과거의 목표수와 계산값이 유지되는 것을 확인했습니다.
다만 과거 기록이 수정 불가능하도록 잠긴 것은 아닙니다.
과거의 목표수나 체크 상태를 직접 변경하면 해당 월의 달성률도 변경됩니다.
11. 월별 달성률과 일별 달성률 평균은 왜 다를까?
새로운 습관을 추가한 뒤 한 가지 더 확인한 결과가 있습니다.
2027년 1월의 월별 달성률은 62.50%였습니다.
그런데 일별달성률 열에서 평균을 계산하면 61.67%가 표시됐습니다.
왜 두 숫자가 다를까요?
1월의 일별 기록 비교
| 날짜 | 체크수 | 목표수 | 일별달성률 |
|---|---|---|---|
| 1월 1일 | 3 | 3 | 100.00% |
| 1월 2일 | 1 | 3 | 33.33% |
| 1월 3일 | 1 | 3 | 33.33% |
| 1월 4일 | 2 | 3 | 66.67% |
| 1월 5일 | 3 | 4 | 75.00% |
이 기록을 계산하는 방법은 두 가지입니다.
방법 A. 체크수 합계 ÷ 목표수 합계
10 ÷ 16 × 100 = 62.50%
방법 B. 일별 달성률의 단순 평균
(100% + 33.33% + 33.33% + 66.67% + 75%) ÷ 5
약 61.67%
두 방식은 계산 기준이 다릅니다.
방법 A는 각각의 습관 목표를 같은 비중으로 계산합니다.
방법 B는 날짜마다 목표 개수가 다르더라도 각 날짜의 달성률에 같은 비중을 부여합니다.
이번 기록장에서는 방법 A를 사용했습니다.
즉, 한 달 동안 체크한 습관의 총개수를 목표로 설정한 습관의 총개수로 나누는 방식입니다.
이 차이는 실제 노션에서도 확인했습니다.
따라서 날짜마다 목표 습관 개수가 달라질 수 있다면 어떤 기준으로 월별 달성률을 계산할지 먼저 정하는 것이 좋습니다.
12. 매일 습관을 기록하는 방법
읽기 체크와 별개로 책별 진도와 완독일을 남기고 싶다면 노션 독서 기록장 만들기를 함께 참고하세요. 이 글의 습관 달성률과 책의 독서 진행률은 계산 기준이 다릅니다.
기록표를 완성했다면 실제로 어떻게 사용하면 될까요?
이번 실습에서 만든 구조는 다음 순서로 사용합니다.
- 일별습관 데이터베이스에서 새 페이지를 만듭니다.
- 기록명을 입력합니다.
- 날짜를 선택합니다.
- 해당 날짜의 목표수를 입력합니다.
- 요약월에서 연결할 월을 직접 선택합니다.
- 실천한 습관을 체크합니다.
- 체크수와 일별달성률을 확인합니다.
이번 실습에서는 새 페이지를 만들었을 때 체크박스 네 개가 모두 해제된 상태였습니다.
날짜, 목표수, 요약월도 비어 있었습니다.
목표수를 자동으로 입력하는 기본값은 설정하지 않았습니다.
따라서 새 기록을 만들 때는 필요한 값을 직접 입력해야 합니다.
다음 달 기록 추가하기
2027년 2월에 기록을 시작한다고 가정하겠습니다.
먼저 월별요약에 새로운 행을 만듭니다.
- 월: 2027-02
- 월시작일: 2027-02-01
이후 일별습관에 새로운 기록을 입력하고 요약월에서 2027-02를 선택합니다.
기록수와 달성수, 목표합계 등의 속성을 새 월마다 다시 만들 필요는 없습니다.
이미 데이터베이스에 설정해 둔 롤업과 수식이 적용되기 때문입니다.
이번 실습에서도 2027년 2월을 추가해 기존 12월과 1월의 계산값이 유지되는 것을 확인했습니다.
2월은 별도 오류 검증에 사용한 뒤 정리했으며, 최종 기록장에는 12월과 1월만 남겼습니다.
월별 기록을 별도 탭으로 보고 싶다면?
일별습관 데이터베이스에서 새로운 보기를 추가하면 됩니다.
이번 실습에서는 다음과 같은 월별 보기를 만들었습니다.
- 2026년 12월
- 2027년 1월
이를 위해 ‘기록월표시’라는 수식 속성을 사용했습니다.
if(empty(prop("날짜")), "", formatDate(prop("날짜"), "YYYY-MM"))
이 수식은 날짜를 2026-12처럼 표시합니다.
이후 월별 보기에서 다음 필터를 적용합니다.
기록월표시 → 값과 동일한 데이터 → 2026-12
1월 보기에서는 값을 2027-01로 변경합니다.
다만 이러한 보기는 기록 날짜를 기준으로 목록을 표시하는 기능입니다.
월별요약 데이터베이스의 실제 합계는 요약월 관계형으로 연결된 기록을 기준으로 계산됩니다.
두 기준은 반드시 구분해야 합니다.
13. 월별 달성률이 맞지 않을 때 확인할 것
이번 실습에서는 여러 입력 오류를 직접 재현했습니다.
그 결과 달성률이 예상과 다르게 나오는 대표적인 원인을 확인할 수 있었습니다.
문제 ① 날짜를 입력했는데 월별 합계에 반영되지 않아요
요약월 관계형이 연결되어 있는지 확인하세요.
이번 실습에서는 2026년 12월 30일 기록의 날짜를 그대로 두고, 요약월 연결만 해제했습니다.
그 결과 12월 계산값이 다음과 같이 변경됐습니다.
| 항목 | 정상 | 요약월 연결 해제 후 |
|---|---|---|
| 기록수 | 3 | 2 |
| 달성수 | 5 | 3 |
| 목표합계 | 9 | 6 |
| 달성률 | 55.56% | 50.00% |
연결을 다시 2026-12로 설정하자 달성률은 55.56%로 복원됐습니다.
날짜를 입력하는 것과 월별요약에 연결하는 것은 별개의 작업입니다.
문제 ② 날짜를 지웠는데 월별 합계는 그대로예요
이번에는 12월 31일 기록의 날짜를 삭제했습니다.
날짜가 비어 있으므로 기록월표시 수식의 결과도 빈값이 됐습니다.
입력점검에는 ‘날짜 누락’이라는 메시지가 표시됐습니다.
하지만 요약월은 여전히 2026년 12월에 연결되어 있었습니다.
따라서 월별 달성률은 55.56%로 유지됐습니다.
이는 이번 기록장에서 월별 집계가 날짜만으로 이뤄지는 것이 아니라 관계형 연결을 기준으로 계산되기 때문입니다.
날짜가 누락된 기록이 월별 집계에서 자동으로 제외되는 것은 아닙니다.
문제 ③ 1월 기록이 12월 합계에 들어갔어요
실제로 잘못된 월 연결을 재현했습니다.
2027년 1월 1일 기록을 2026년 12월에 연결했습니다.
그 결과는 다음과 같았습니다.
| 월 | 정상 달성률 | 잘못 연결한 후 |
|---|---|---|
| 2026년 12월 | 55.56% | 66.67% |
| 2027년 1월 | 62.50% | 53.85% |
날짜는 1월 1일이었지만, 기록은 관계형으로 연결한 12월에 집계됐습니다.
이런 오류가 발생해도 노션이 자동으로 올바른 월을 선택해 주지는 않았습니다.
이번 입력점검 수식에서도 날짜와 요약월이 서로 다르다는 경고는 표시하지 않았습니다.
따라서 기록월표시와 요약월을 함께 비교해 확인해야 합니다.
문제 ④ 목표수를 잘못 입력했어요
이번에는 기존 기록의 목표수를 변경하면서 달성률이 어떻게 달라지는지 확인했습니다.
12월 29일 기록의 정상 목표수는 3입니다.
이를 일부러 다른 값으로 변경했습니다.
| 입력한 목표수 | 해당 기록의 표시 | 12월 달성률 |
|---|---|---|
| 3 | 정상 | 55.56% |
| 0 | 0.00%·목표수 확인 | 83.33% |
| 빈값 | 공란·목표수 확인 | 83.33% |
| 3.5 | 57.14%·목표수 확인 | 52.63% |
잘못된 목표수가 입력되면 월별 달성률도 달라졌습니다.
중요한 점은 입력점검에서 오류를 알려주더라도 해당 기록이 롤업 계산에서 자동 제외되지는 않았다는 사실입니다.
따라서 목표수 경고가 표시된 기록은 월별 결과를 해석하기 전에 수정해야 합니다.
이번 실습에서는 잘못된 값을 모두 목표수 3으로 복원했습니다.
문제 ⑤ 같은 날짜를 두 번 기록했어요
이번 기록장에서는 같은 날짜에 여러 기록을 만들 수 있었습니다.
실제로 12월 29일 기록을 복제해 같은 날짜의 행을 하나 더 만들었습니다.
그 결과 12월에는 네 개의 기록이 집계됐습니다.
달성률도 55.56%에서 58.33%로 변경됐습니다.
이번 최소판에는 같은 날짜의 기록을 자동으로 차단하는 기능이 없습니다.
따라서 전체 기록을 날짜 오름차순으로 정렬해 중복 날짜가 있는지 확인해야 합니다.
테스트에 사용한 중복 기록은 이후 정리했습니다.
문제 ⑥ 예전 습관 세 개에 스트레칭까지 체크했어요
목표수 3인 과거 기록에서 스트레칭을 체크하는 상황도 확인했습니다.
이번 수식에서는 목표수가 3이면 스트레칭을 체크수에 포함하지 않습니다.
따라서 해당 기록의 기존 달성률은 유지됐습니다.
하지만 입력점검 속성에는 별도 경고가 표시되지 않았습니다.
이를 확인하기 위해 다음 두 조건을 사용하는 점검 보기를 만들었습니다.
- 목표수 = 3
- 스트레칭 = 체크 표시됨
두 조건을 모두 만족하는 기록만 표시하도록 설정했습니다.
이런 방식으로 수식이 계산에서 제외하는 입력 실수도 확인할 수 있습니다.
14. 기록이 없는 달의 달성률 0%는 무슨 뜻일까?
달성률이 0%라고 해서 반드시 모든 습관을 실천하지 않았다는 뜻은 아닙니다.
이번 실습에서는 두 가지 경우를 비교했습니다.
① 기록을 한 번도 작성하지 않은 달
새로운 월을 만들었지만 일별습관 기록을 연결하지 않았습니다.
그 결과는 다음과 같았습니다.
- 기록수: 0
- 달성수: 0
- 목표합계: 0
- 달성률: 0.00%
- 집계상태: 기록 없음
② 기록은 작성했지만 모든 습관을 체크하지 않은 달
이번에는 목표수 3인 기록을 하나 만들고 세 가지 습관을 모두 미체크 상태로 뒀습니다.
그 결과는 다음과 같았습니다.
- 기록수: 1
- 달성수: 0
- 목표합계: 3
- 달성률: 0.00%
- 집계상태: 등록 기록 기준
두 경우 모두 달성률은 0.00%입니다.
하지만 의미는 다릅니다.
첫 번째는 기록 자체가 없는 상태이고, 두 번째는 기록은 있지만 습관을 실천하지 않은 상태입니다.
이 차이를 구분하기 위해 월별요약에 ‘집계상태’라는 수식 속성을 추가했습니다.
if(prop("기록수") == 0, "기록 없음", "등록 기록 기준")
이 수식은 기록수가 0이면 ‘기록 없음’을 표시합니다.
기록이 하나라도 있다면 ‘등록 기록 기준’이라고 표시합니다.
따라서 월별 달성률을 볼 때는 비율뿐 아니라 기록수와 집계상태도 함께 확인하는 것이 좋습니다.
15. 이 기록표를 사용할 때 알아둘 한계
이번 습관 트래커는 실제로 달성률 계산과 기록 보존을 검증했지만, 모든 상황을 자동으로 처리하는 시스템은 아닙니다.
기록하지 않은 날짜는 자동으로 실패 처리되지 않습니다
이번 달성률은 등록된 기록만 기준으로 계산합니다.
예를 들어 한 달에 열흘만 기록했다면 열흘의 목표수와 체크수를 합산합니다.
나머지 날짜가 자동으로 분모에 포함되는 것은 아닙니다.
따라서 매일 습관을 기록하려는 사용자라면 기록 자체를 빠뜨리지 않는 것이 중요합니다.
새 기록은 자동으로 생성되지 않습니다
이번 실습에서는 매일 자동으로 기록이 만들어지는 기능을 구현하지 않았습니다.
새로운 날짜 기록은 사용자가 직접 추가해야 합니다.
목표수와 요약월도 직접 입력해야 합니다.
잘못된 기록이 합계에서 자동 제외되지는 않습니다
입력점검에서 경고가 표시되더라도 관계형으로 연결된 기록은 롤업에 포함될 수 있습니다.
이 때문에 잘못된 목표수나 요약월을 수정하지 않으면 월별 달성률이 실제 의도와 다르게 계산될 수 있습니다.
과거 기록을 수정하면 과거 달성률도 바뀝니다
이번 기록표는 날짜마다 당시의 목표수를 보관합니다.
하지만 과거 기록을 잠그는 기능을 구현한 것은 아닙니다.
과거 체크박스를 변경하거나 목표수를 수정하면 해당 월의 계산 결과도 달라질 수 있습니다.
습관을 무제한 추가하는 구조는 아닙니다
이번에 검증한 것은 고정된 세 가지 습관에 네 번째 습관을 추가하는 사례입니다.
다섯 번째 습관을 추가하거나 기존 습관을 삭제하는 경우에는 수식과 기록 구조를 다시 검토해야 합니다.
또한 실제 모바일 앱, 여러 사용자와의 협업, 알림, 자동 기록 생성, 연간 통계 차트는 이번 실습에서 확인하지 않았습니다.
16. 실제 제작 및 검증 결과
이번 기록표는 노션 무료 플랜에서 제작했습니다.
데이터베이스 두 개와 관계형, 롤업, 수식을 이용했습니다.
최종적으로 일별습관 8개 기록과 월별요약 2개 행을 유지했습니다.
| 검증 항목 | 실제 결과 |
|---|---|
| 일별습관 데이터베이스 생성 | 성공 |
| 월별요약 데이터베이스 생성 | 성공 |
| 관계형 및 1개 페이지 제한 | 성공 |
| 체크수와 일별달성률 계산 | 성공 |
| 월별 달성률 계산 | 성공 |
| 초기 12월 55.56% | 확인 |
| 초기 1월 58.33% | 확인 |
| H08 추가 후 1월 62.50% | 확인 |
| 과거 12월 55.56% 유지 | 확인 |
| 월별 합계 비율과 일별 평균 비교 | 확인 |
| 날짜·요약월 누락 점검 | 성공 |
| 잘못된 월 연결과 복원 | 성공 |
| 목표수 오류 점검 | 일부 확인 |
| 중복 날짜 영향 확인 | 성공 |
| 새로고침 후 기록 및 계산 유지 | 성공 |
| 실제 모바일 앱 사용 | 미확인 |
위 표는 기능별 요약입니다. 별도로 기록한 원래의 15개 검증 항목 중 14개가 성공했고, 1개는 일부 확인으로 기록했습니다.
일부 확인 항목은 빈 목표수와 명시적인 0의 표시가 달랐던 사례입니다.
잘못된 목표수를 감지하고 월별 집계가 왜곡되는 점은 확인했지만, 빈 목표수가 일별달성률에 표시되는 방식은 최초 예상과 달랐습니다.
최종적으로 임시 오류 값을 복원한 뒤 다음 결과를 다시 확인했습니다.
2026년 12월: 55.56%
2027년 1월: 62.50%
마무리
노션 습관 트래커를 만들 때 체크박스와 진행률을 표시하는 것만 생각하기 쉽습니다.
하지만 실제로 오래 사용하려면 새로운 습관을 추가하거나, 기록을 빠뜨리거나, 날짜를 잘못 선택하는 상황도 고려해야 합니다.
이번 실습에서는 각 날짜의 목표수를 따로 보존하는 방식으로 새로운 습관이 추가되더라도 과거의 달성률 계산 기준을 유지할 수 있었습니다.
특히 월별 달성률이 어떻게 계산되는지 이해하고, 입력값과 관계형 연결을 함께 확인하는 것이 중요했습니다.
처음에는 세 가지 습관만 관리해도 충분합니다.
기록하는 방법에 익숙해진 뒤 새로운 습관을 추가하고 월별 결과를 비교하면, 자신에게 필요한 형태로 습관 기록표를 발전시킬 수 있습니다.
실습 환경 및 참고 자료
- 실습일: 2026년 10월 10일
- 요금제: Notion 무료 플랜
- 워크스페이스: 멤버 1명
- 사용 환경: 한국어 웹
- 운영체제: macOS 15.7.4
- 브라우저: Chrome 155.0.8059.39
- 시간대: 서울(GMT+9:00)
모든 날짜와 습관은 기능 검증을 위한 가상 데이터입니다.
실습 원본은 비공개 페이지로 유지했으며, 공개 복제용 무료 템플릿은 제공하지 않았습니다.
공식 참고 자료:
참고한 제작 자료:
이번 습관 기록표는 기존 템플릿을 복제하지 않고 가상의 기록과 별도의 계산 구조를 이용해 제작·검증했습니다.
함께 보면 좋은 노션 실습
노션 월별 가계부 만들기 — 관계형과 롤업으로 월별 합계를 확인하는 다른 제작 예제입니다.
노션 데이터베이스 복제 방법 — 실습 전에 독립 사본과 원본을 공유하는 보기를 구분하세요.

















