列出通过条件并按月分组的帐户

List account which pass a condition and group out come by month

我有这个数据库

CREATE TABLE Trainee(
TraineeID smallint unsigned auto_increment primary key,
Full_Name nvarchar(100) not null,
Birth_Date date not null,
Gender enum('male', 'female', 'unknown') not null,
ET_IQ tinyint not null,
CHECK (0<=ET_IQ<=20),
ET_Gmath tinyint not null,
CHECK (0<=ET_Gmath<=20),
ET_English tinyint not null,
CHECK (0<=ET_English<=50),
Training_Class varchar(15) not null,
Evaluation_Notes nvarchar (200),
 );

我想select通过条件的Trainne并按出生月份对这些受训者进行分组

SELECT Full_Name, 
       Birth_Date 
FROM Trainee 
WHERE ET_IQ + ET_Gmath + ET_English >= 20 
GROUP BY MONTH(Birth_Date);



('thomas', '1988-11-30', 'male', '10', '10', '40', '1') 
('Tom', '1995-07-15', 'male', '15', '8', '30', '2') 
('emma', '1990-08-20', 'female', '15', '15', '25', '3') 

但它不起作用。请帮忙!谢谢

你是说ORDER BY出生月份吗?[=​​15=]

试试这个

SELECT Full_Name, 
       Birth_Date,
       MONTHNAME(Birth_Date) 
FROM Trainee 
WHERE ET_IQ + ET_Gmath + ET_English >= 20 
ORDER BY MONTH(Birth_Date), Full_Name;

ORDER BY 是控制结果集排序方式的 SQLish 方式。 GROUP BY 允许您汇总数据,执行如下操作:

SELECT MONTHNAME(Birth_Date),
       COUNT(*) How_Many_Birthdays 
FROM Trainee 
WHERE ET_IQ + ET_Gmath + ET_English >= 20 
GROUP BY MONTH(Birth_Date)