python-SQLAlchemy中是否有LISTAGG WITHIN GROUP等效项?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python-SQLAlchemy中是否有LISTAGG WITHIN GROUP等效项?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1266字,纯文字阅读大概需要2分钟。
内容图文
![python-SQLAlchemy中是否有LISTAGG WITHIN GROUP等效项?](/upload/InfoBanner/zyjiaocheng/883/0f43273ec7834291a403d3b6b87a5f4c.jpg)
这是一个简单的Oracle表:
+-----------+---------+
| food | person |
+-----------+---------+
| pizza | Adam |
| pizza | Bob |
| pizza | Charles |
| ice cream | Donald |
| hamburger | Emma |
| hamburger | Frank |
+-----------+---------+
这是我想执行的汇总SELECT的结果:
+-----------+------------------+
| food | people |
+-----------+------------------+
| hamburger | Emma,Frank |
| ice cream | Donald |
| pizza | Adam,Bob,Charles |
+-----------+------------------+
使用Oracle 11g,使用LISTAGG可以轻松实现:
SELECT food, LISTAGG (person, ',') WITHIN GROUP (ORDER BY person) AS people
FROM mytable
GROUP BY food;
但是我还无法在SQLAlchemy中找到实现此目的的方法. old question from Stack Overflow显示某人在尝试实现自定义类来完成工作的位置,但这真的是最好的选择吗?
MySQL具有group_concat功能,因此this questioner通过func.group_concat(…)解决了他的问题.遗憾的是,该功能在Oracle中不可用.
解决方法:
从version 1.1开始,您可以使用FunctionElement.within_group(*order_by):
In [7]: func.listagg(column('person'), ',').within_group(column('person'))
Out[7]: <sqlalchemy.sql.elements.WithinGroup object at 0x7f2870c83080>
In [8]: print(_.compile(dialect=oracle.dialect()))
listagg(person, :listagg_1) WITHIN GROUP (ORDER BY person)
内容总结
以上是互联网集市为您收集整理的python-SQLAlchemy中是否有LISTAGG WITHIN GROUP等效项?全部内容,希望文章能够帮你解决python-SQLAlchemy中是否有LISTAGG WITHIN GROUP等效项?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。