2017-07-25 4 views
2

この私のSQLコード

Attendance 
---------- 

Studentid | Date  | Status 
-------------------------------- 
1   | 2017-01-01 | Present 
1   | 2017-01-02 | Present 
1   | 2017-01-03 | Absent 
1   | 2017-01-04 | Presnt 
2   | 2017-01-01 | Absent 
2   | 2017-01-02 | Present 
2   | 2017-01-03 | Absent 
2   | 2017-01-04 | Presnt 

のように私の表Iは、このような出力を得るためにMySQLのクエリを書きたいです。

StudentID | PresentCount | AbsentCount 
1   |  3  |  1 
2   |  2  |  2 

答えて

0

SELECT StudentID、日付、StudentID = 1

SELECT StudentID、日付の出席からのステータス、StudentID = 2

0
SELECT Studentid, 
    SUM(Status='Present') PresentCount , 
    SUM(Status='Absent') AS AbsentCount FROM Attendance 
    GROUP BY Studentid 

出席からのステータスは、クエリの上に試してみてください。

0

はこれを試してみてください....

SELECT 
    Studentid, 
    sum(case when Status = 'Present' then 1 else 0 end) AS PresentCount, 
    sum(case when Status = 'Absent' then 1 else 0 end) AS AbsentCount 
FROM 
    Attendance 
GROUP BY 
    Studentid 
0

これは動作するはずです:あなたのフィールドの値が「不在」と「現在」の別のスペルを持っている場合

SELECT StudentId, SUM(Status='Present') as PresentCount, SUM(Status='Absent') AS AbsentCount FROM Attendance GROUP BY StudentId; 

も問題があるだろう。

0

'present'という単語にはいくつかのスペルの問題があります。 これは正常に動作するはずです。

SELECT Studentid AS StudentID ,SUM(Status !='Absent') PresentCount , 
    SUM(Status='Absent') AS AbsentCount FROM Attendance 
    GROUP BY Studentid 
0

このクエリを実行します。これはあなたが望むものです。ここにサンプルがありますfiddle

select id, max(PresentCount), max(AbsentCount) from (select id, sum(status='Present') as PresentCount, sum(status='absent') as AbsentCount from Student group by id, status) as table1 group by id;