There are 7 cases of past tense suffix 었/았/였
1. Use 었 after the last vowel of verb/adjective stem is one of ㅓ, ㅕ, ㅜ, ㅡ, ㅣ, ㅐ, ㅔ, ㅖ, ㅞ, ㅚ, ㅟ, ㅢ
e.g.
먹(다) + 었다 → 먹었다
2. Use 었 after the last vowel of verb/adjective stem is one of ㅏ,ㅗ
e.g.
맑(다) + 았다 → 맑았다
3. Use 었 after N+이다
e.g.
사람이(다) + 었다 → 사람이었다
4. Use 였 after 하다
e.g.
하(다) + 였다 → 하였다
5. Use 였 after 하다 ending verb
e.g.
공부하(다) + 였다 → 공부하였다
6. Use 였 as a contraction of 이었 When the verb stem ends with 이 (Optional)
e.g.
먹이(다) + 었다 → 먹이었다 → 먹였다
7. Use 였 as a contraction of 이었 When the Noun ends with vowel of N+이다 (Optional)
e.g.
사자이(다) + 었다 → 사자이었다 → 사자였다 (사자 ends with vowel)
바다이(다) + 었다 → 바다이었다 → 바다였다 (바다 ends with vowel)
Thus, 였 is used in 4,5,6,7 case.