Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

SQL select if a certian number of WHERE clauses satisfied

Tags:

sql

where

netezza

So I have a SQL statement of the following form with multiple WHERE clauses:

SELECT cols FROM table
WHERE
CONDITION1 OR
CONDITION2 OR 
...
CONDITIONN

I know that if I run this, then I will get all rows that satisfy at least one of the above n conditions.

But now, I want to return the rows such that at least k of the WHERE conditions are satisfied. Is there a way to do this in SQL without writing out all n Choose k subsets of the set of WHERE clauses?

like image 703
Relma2 Avatar asked Oct 18 '22 08:10

Relma2


1 Answers

This is a rather tedious way, but it should work:

SELECT cols 
FROM table
WHERE 
    CASE WHEN CONDITION1 THEN 1 ELSE 0 END +
    CASE WHEN CONDITION2 THEN 1 ELSE 0 END + 
    CASE WHEN CONDITION3 THEN 1 ELSE 0 END +
    ...
    >= N
;
like image 114
Lamak Avatar answered Oct 21 '22 03:10

Lamak