A complete picture of the lattice of subfields for a cyclotomic extension over $\mathbb{Q}$.
Solution 1:
If $q$ is a power of an odd prime $p$, then the multiplicative group of units in the ring ${\bf Z}/q{\bf Z}$ is cyclic of order $q-(q/p)$, and that's also the Galois group of ${\bf Q}(\zeta_q)$ over the rationals, so it seems to me that your construction for the prime case works.
Solution 2:
Let $\zeta$ be a primitive $p^s$-th root of unity for a prime $p$ and a positive integer $s$. Let $G = \operatorname{Gal}(\mathbb{Q}(\zeta)/\mathbb{Q}).$ Let $$ \eta = \zeta + \zeta^p + ... + \zeta^{p^{s-1}}.$$ One can prove by induction on $s$ that the set $\mathcal{B} = \{g(\eta) \; | \; g \in G\}$ is a basis of $\mathbb{Q}(\zeta)/\mathbb{Q}$. Now for any $\alpha \in \mathbb{Q}(\zeta)$ let $H$ be the subgroup of $G$ fixing $\alpha$. Define $$ \beta = \sum_{\sigma \in H} \sigma(\eta).$$ Since $\tau(\beta) = \beta$ for all $\tau \in H$, $\mathbb{Q}(\beta)$ is a subfield of $\mathbb{Q}(\alpha)$. We will now show by contradiction that for any $\tau \in G \setminus H$ that $\tau(\beta) \neq \beta$. Assume there exists a $\tau \in G \setminus H$ such that $\tau(\beta) = \beta$. Since $\mathcal{B}$ is a basis for $\mathbb{Q}(\zeta)/\mathbb{Q}$, there must exist a $\sigma \in H$ such that $\tau \circ \sigma(\eta) = \iota(\eta)$ where $\iota$ is the identity element of $G$. Then $\tau = \sigma^{-1} \in H$, which contradicts our assumption. We conclude that for all $\tau \in G \setminus H$ we have $\tau(\beta) \neq \beta$. Thus $\mathbb{Q}(\beta)$ contains $\mathbb{Q}(\alpha)$. This proves $\mathbb{Q}(\beta) = \mathbb{Q}(\alpha)$.
This shows that all subfields of $\mathbb{Q}(\zeta)$ can be constructed as $\mathbb{Q}(\beta)$ where $\beta = \sum_{\sigma \in H} \sigma(\zeta + \zeta^p + ... + \zeta^{p^{s-1}})$ for a subgroup $H$ of $\operatorname{Gal}(\mathbb{Q}(\zeta)/\mathbb{Q})$.
For example, if $\zeta$ is a primitive 9-th root of unity, then $\eta = \zeta + \zeta^3$. Since 2 is a quadratic nonresidue modulo 3, the Galois group $G$ is cyclic with generator $\tau$ defined by $\tau(\zeta) = \zeta^2$. Since $\varphi(9) = 6$, the subgroups of $G$ are itself, the trivial subgroup, $\left< \tau^2 \right>$, and $\left<\tau^3\right>$. We know what fields we'll get for the first two from basic Galois theory, so now we must now find $\beta = \sum_{\sigma \in H}\sigma(\eta)$ for the two proper nontrivial subgroups. When $H = \left<\tau^2\right>$
$$\beta = \sum_{\sigma \in \left< \tau^2 \right>} \sigma(\eta) = (\zeta + \zeta^3) + (\zeta^4 + \zeta^3) + (\zeta^7 + \zeta^3) = 3\zeta^3.$$ In this case $\mathbb{Q}(\beta) = \mathbb{Q}(\zeta^3)$. When $H = \left< \tau^3 \right>$
$$\beta = \sum_{\sigma \in \left< \tau^3 \right>} \sigma(\eta) = (\zeta + \zeta^3) + (\zeta^8 + \zeta^6) = \zeta + \zeta^8 - 1$$ In this case $\mathbb{Q}(\beta) = \mathbb{Q}(\zeta + \zeta^8) = \mathbb{Q} \left( \cos \left(\frac{2 \pi}{9} \right) \right)$.