gpt4 book ai didi

java - 在 postgresql 中使用 group by 选择某些格式

转载 作者:行者123 更新时间:2023-11-29 13:10:26 24 4
gpt4 key购买 nike

所以我必须通过读取 PostgreSQL 中的查询来用 Java 编写 CSV。问题是 csv 必须具有特定格式,而我无法做到这一点。我正在尝试在 postgresql 中完成此操作,但如果不可能,我也接受有关如何在 Java 中解决它的想法。

我尝试了很多 group by 语法,但它不能正常工作,此时我什至不确定它在 postgresql 中是否可行,但如果可能的话我想这样做。假设我想看到所有类的学生都分组了。我认为这是因为日期,但我删除了它并且没有任何区别。

SELECT classID,
firstName || secondName || fathersName,
studentGender,
to_char(studentBirthDate, 'DD.MM.YYYY HH24:mm:ss')
FROM Student, Class
WHERE studentGender = Male
GROUP BY classID, firstName, secondName, fathersName, studentGender, sutdentBirthdate
ORDER BY studentID;

我期望得到以下结果:

1, PaulLoganDan, JakeIanGolagan, JohnDoeNick, Male, NotSureHere
2, MatthewJoshuaSamuel, JosephJamesBenjamin, AdamLukeHarry, LewisNathanBrad, Male, NotSureHere

我得到了什么:

1, PaulLoganDan, Male, 1.1.1999 \n
1, JakeIanGolagan, Male, 2.2.1999 \n
1, JohnDoeNick, Male, 3.3.1999 \n

2, MatthewJoshuaSamuel, Male, 4.4.1999 \n
2, JosephJamesBenjamin, Male, 5.5.1999 \n
2, AdamLukeHarry, Male, 6.6.1999 \n
2, LewisNathanBrad, Male, 7.7.1999 \n

最佳答案

我相信 STRING_AGG 函数就是您正在寻找的,并且是为此类问题而设计的。自 PostgreSQL 9.0 以来就存在。

我觉得应该是这样的:

SELECT classID,
STRING_AGG(firstName || secondName || fathersName, ', ')
FROM Student, Class
WHERE studentGender = Male
GROUP BY classID
ORDER BY studentID;

或者,从 8.4 版开始,有 ARRAY_AGG 函数:

SELECT classID,
ARRAY_TO_STRING(ARRAY_AGG(firstName || secondName || fathersName), ', ')
FROM Student, Class
WHERE studentGender = Male
GROUP BY classID
ORDER BY studentID;

我不认为在旧版本中存在聚合函数。

关于java - 在 postgresql 中使用 group by 选择某些格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55531914/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com