Group by and having clause

Consider the following relational schema:

candidates (candidate_id, skill)

[Sample input table]

Select candidate_id
from candidates 
group by candidate_id
having sum(if(lower(skill)='python' or lower(skill)='tableau',1,0))=3

How can we even access a cell in the having clause by using aggregate functions? As we know the having is executed after group by, hence the data should be lost while summarising? What am I missing out?

I know having clause executes after group by, hence when group by executes the rows/records are summarised, the data present in the cells should be lost? We should not be able to access it however possible even by aggregate functions ?