Code: Select all
rel = duckdb.sql('select * from values (1, 4), (1, 2), (2, 3), (2, 4) df(a, b)')
machen
Code: Select all
In [9]: duckdb.sql('select sum(a) filter (where b>1) from rel')
Out[9]:
┌───────────────────────────────┐
│ sum(a) FILTER (WHERE (b > 1)) │
│ int128 │
├───────────────────────────────┤
│ 6 │
└───────────────────────────────┘
Ich habe es versucht
Code: Select all
rel.select(duckdb.FunctionExpression('sum', duckdb.FunctionExpression('filter', duckdb.ColumnExpression('a'), duckdb.ColumnExpression('b')>1)))
Code: Select all
---------------------------------------------------------------------------
BinderException Traceback (most recent call last)
Cell In[10], line 1
----> 1 rel.select(duckdb.FunctionExpression('sum', duckdb.FunctionExpression('filter', duckdb.ColumnExpression('a'), duckdb.ColumnExpression('b')>1)))
BinderException: Binder Error: No function matches the given name and argument types 'filter(INTEGER, BOOLEAN)'. You might need to add explicit type casts.
Candidate functions:
filter(ANY[], LAMBDA) -> ANY[]