On Aug 12, 2011, at 6:43 PM, nospam wrote:

> I'm trying to do something like this in sqlalchemy:
> 
> select (score/10)*10 || '-' || (score/10)*10+9 as scorerange,
> count(*)from scoresgroup by score/10 order by 1
> 
> which should give:
> scorerange | count
> ------------+-------
> 0-9        |    11
> 10-19     |    14
> 20-29     |     3
> 30-39     |     2
> 
> Any ideas on how to do the string concatentation in the ranges?

the + operator resolves to the concatenation operator if used against an 
expression with a string type, or if using untyped elements concat() will get 
you there:

from sqlalchemy.sql import column

column('foo', String) + "bar"
column('foo').concat("bar")

your expression above appears to be evaluating a numeric against a string 
(so...this is MySQL ? :) )   you might consider calling cast(expr, String) on 
the numeric value before evaluating in a string context.

((score / 10) * 10).concat("-").concat((score / 10)*10) + 9).label('scorerange')


from sqlalchemy import cast, String
cast((score / 10) * 10, String).concat("-").concat(cast((score / 10)*10) + 9, 
String)).label('scorerange')










> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "sqlalchemy" group.
> To post to this group, send email to sqlalchemy@googlegroups.com.
> To unsubscribe from this group, send email to 
> sqlalchemy+unsubscr...@googlegroups.com.
> For more options, visit this group at 
> http://groups.google.com/group/sqlalchemy?hl=en.
> 

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to sqlalchemy@googlegroups.com.
To unsubscribe from this group, send email to 
sqlalchemy+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en.

Reply via email to