Easy-lazy solution:
You are only concerned about whether the length is less than 3, so the result is not changed if you truncate your input list at 3 elements:
$ ghci
GHCi, version 8.8.4: https://www.haskell.org/ghc/ :? for help
λ>
λ> sumsOf a = map sum [ x | x <- a , length (take 3 x) < 3]
λ>
λ> sumsOf [[],[1,2,4],[],[6]]
[0,0,6]
λ> sumsOf [[1],[8],[6],[],[9,9]]
[1,8,6,0,18]
λ> sumsOf [[1,2,9,10],[7,8,9],[6,9,4,2,0],[9,9,9]]
[]
λ> sumsOf [[1..],[7..],[6..],[9..],[10..],[100..]]
[]
λ> sumsOf [[1,2], [1..], [], [4]]
[3,0,4]
λ>
So this readily solves the problem with unlimited lists.
In slightly more idiomatic fashion:
sumsOf :: Num a => [[a]] -> [a]
sumsOf xss = map sum [ xs | xs <- xss , length (take 3 xs) < 3]
The sole drawback is that library function take has to duplicate the list nodes.
An idea mentioned in a comment by n.1.8e9-where's-my-sharem: it is possible to have something a bit more efficient, by writing some boundedLength function that returns at most k, for example like this:
boundedLength :: Int -> [a] -> Int
boundedLength k xs = go 0 xs
where
go depth [] = depth
go depth (x:xs) = if (depth < k) then go (depth + 1) xs
else k
In that case, our sumsOf function ends up as:
sumsOf :: Num a => [[a]] -> [a]
sumsOf xss = map sum [ xs | xs <- xss , boundedLength 3 xs < 3]