This error occurs in this SQLite query:
select f.rid, c.title, sum(some_expression) as ratio
from doesntmatter
where c.active = 1 or (ratio = 1.0 and c.active = 0
and c.deactivated in (1, 2, 3, 4, 5)
group by f.rid
This question solves it with having clause:
select f.rid, c.title, sum(some_expression) as ratio
from doesntmatter
where c.active = 1 or (c.active = 0
and c.deactivated in (1, 2, 3, 4, 5)
group by f.rid
having ratio = 1.0
But in my case this changes the semantics of the expression. Do you know how to achieve the expression that is in the original where clause?
Basically, you can’t reference an aliased column in a where clause. Take a look at this question to see how to workaround that.
Aditionally, you should add to the group by all non-aggregated columns present in the
selectstatement, in this case,c.idandc.title.It is difficult to rewrite that query for you because the logic is a bit difficult to understand (because of the wrong group by).
Edit:
After a second thought, you might just need to correct the
group by.Or maybe:
I can’t help you with the previous part because I don’t know the fields nor the data of your tables nor how to interpret them. But selecting fields not present in the group by is a bad idea. Anyway, remember you can always join back to the original tables and get the info you are looking for, not just the fields displayed in the
select.