簡體   English   中英

如何讓現在和缺勤的學生都學習一年

[英]How to get both present and absent students for a year

我需要得到總數。 一年的出席人數和缺席人數:這是我的查詢:

SELECT if( status = 'P',count(level_id), 0) AS present, 
       if(status='A',count(student_id), 0) AS Absent 
        FROM attendance WHERE level_id = 'L1' AND date LIKE '2016%'

但這將返回總數。 的學生出席或缺席的部分。

問題是您誤解了COUNT(...)在查詢中的作用。 如果您真的想根據缺席或在場進行計數,則可以在內部有條件的情況下使用SUM(...)

SELECT
    SUM(if(status = 'P', 1, 0)) AS Present
    SUM(if(status = 'A', 1, 0)) AS Absent
FROM
    attendance
WHERE
    level_id = 'L1' AND date LIKE '2016%'

如果需要計算元素,則返回1:

 SELECT SUM(if( status = 'P',1, 0)) AS present, SUM(if(status='A',1, 0)) AS Absent
 FROM attendance WHERE level_id = 'L1' AND date LIKE '2016%'

嘗試使用group by子句,例如:

SELECT 
 status, 
 count(student_id) as attendance 
FROM attendance 
WHERE level_id = 'L1' 
  AND date LIKE '2016%' 
GROUP BY status;

它將為您提供表中每種狀態的計數

這將起作用:

SELECT DISTINCT(student_name), SUM(status = 'P') AS present, SUM(status='A') AS Absent FROM attendance GROUP BY student_name where date LIKE '2016%'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM