2017-03-02 68 views
0

在数据库中,我为学生注册一个事件。它看起来像这样:如何总结两行sql查询

id, firstname, surname, gender, email, studydegree, study, workshop1, workshop2, participate_speeddating, ss_companies, date of birth, date of registration 

例如

6574, John, Doe, Male, [email protected], Phd, ComputerScience, None, None, no, None, 01-01-1990, 01-01-2017 

我有查询以下几点:

<?php query_to_html('Studies', 'SELECT study, COUNT(*) FROM registrants GROUP BY study'); ?> 

其中query_to_html变换查询到HTML表格。 这给了我以下内容:

study , COUNT(*) 
Mathematics, 90 
Physics, 71 
Astronomy, 5 
Biology, 25 
Biomedical Sciences, 25 
... etc 

我想总结一些研究的基础上,研究协会(阵列),例如第1组)数学,天文学,物理学和计算机科学与第2组)生物和生物医学科学。像这样:

study_association, amount 
Fundamentals, 166 
Bio, 50 

其中166和55是对应于study_association数组的几行的总和。

我该怎么做?

谢谢!

+2

添加一些示例表格数据和预期结果 - 所有以及格式化文本。 – jarlh

回答

0

您可以使用SUM(IF())来只计算特定的行。我假设你的列是“group”:

SELECT 
    study, 
    COUNT(*) AS sum, 
    SUM(IF(`group` IN ('Mathematics', 'Astronomy', 'Physics', 'Computer Science'), 1, 0) AS group1, 
    SUM(IF(`group` IN ('Biology', 'Biomedical'), 1, 0) AS group2 
FROM registrants 
GROUP BY study 

这将计算位于给定数组中的某个组中的注册者。