gpt4 book ai didi

python - MYSQL中如何按列分组两次

转载 作者:行者123 更新时间:2023-11-29 16:14:18 24 4
gpt4 key购买 nike

我有一个数据库,其中的表类似于 thisthese fields 。我想返回所有学生的名字和姓氏,并按瞳孔组,然后按年份对它们进行分组,并按字母 DESC(学生组)、ASC(年份)和字母 DESC(姓氏)对组进行排序。

例如,在上表中运行 SELECT * FROM Students; 应返回以下内容:

(((('乔纳森', '莫里斯'))), ((('安珀', '威尔弗雷德))), ((('格蕾丝','哈洛'))), (( ('伊丽莎白', '范斯蒂芬'))), ((('克雷格', '菲利普'))), ((('爱丽丝', '霍华德'))), ((('克里斯托弗', '保尔森'))), ((('威廉', '冲')), (('马修', '冲'))), ((('杰西卡', '哈里斯'))))

所以它的格式是这样的:外面的括号定义集体学生,里面的括号定义学生组,里面的括号定义年份,然后里面的括号定义单个学生。

抱歉,如果这不是很清楚我是否犯了一个错误。如果有什么我可以澄清以使其更容易理解的内容,请告诉我,我会这样做。

目前,我已尝试从学生中选择名字、姓氏 GROUP BY瞳孔_组、年份ORDER BY瞳孔_组、年份ASC,但它并没有将它们合并到组中或按照我想要的方式对它们进行排序。

谢谢。

编辑:我刚刚意识到我的 year 列是 varchar(2) ,因此可能无法对其进行排序,因为它包含数字。我想我会将其改为 int

EDIT2:我将year更新为int。我现在已尝试按照下面的建议SELECT first_name, surname, Year, Pupil_group FROM Students ORDER BY Pupil_group ASC, Year ASC, surname ASC(添加了yearpupil_group 使其更容易解释),但这会返回 (('Jonathan', 'Morris', 9, 'Apollo'), ('Amber', 'Wilfred', 9, 'Artemis'), ('格蕾丝', '哈洛', 9, '雅典娜'), ('伊丽莎白', '范斯蒂芬', 9, '德米特'), ('杰西卡', '哈里斯', 10, '德米特'), ( '克雷格', '菲利普', 9, '哈迪斯'), ('爱丽丝', '霍华德', 9, '赫拉'), ('克里斯托弗', '保尔森', 9, '爱马仕'), ('威廉', 'Chong', 9, '波塞冬'), ('马修', 'Chong', 10, '波塞冬')).虽然它确实对它们进行了正确排序,但它们都没有按照我所描述的那样进行分组。

最佳答案

我认为您只是很难阐明 ORDER BY 子句:

SELECT First_Name, Surname, Pupil_Group, Year
FROM pupils
ORDER BY pupil_group DESC, year, Surname DESC;

这会将同一学生组中的所有记录放在一起。然后,在每个这样的组中,记录将按年份升序排序,然后按姓氏降序排序。

关于python - MYSQL中如何按列分组两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54969940/

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