2012-11-03 3 views
0

This DEMO montre par mois. Et this DEMO montre par semaine. Cependant, je veux afficherComment trouver la dernière semaine et le mois de MySQL

Q1: seulement cette semaine de chaque étudiant.

Q2: seulement ce mois-ci de chaque étudiant.

Q3: seulement la dernière semaine de chaque étudiant.

Q4: seulement le dernier mois de chaque étudiant.

Comment puis-je y parvenir?

CREATE TABLE `hw_homework` (
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT, 
    `studentid` int(10) NOT NULL, 
    `subjectid` int(10) NOT NULL, 
    `assignment_name` varchar(255) COLLATE utf8_unicode_ci NOT NULL, 
    `teacherid` int(10) NOT NULL, 
    `date` datetime NOT NULL, 
    PRIMARY KEY (`id`) 
) ; 

INSERT INTO `hw_homework` (`id`, `studentid`, `subjectid`, `assignment_name`, `teacherid`, `date`) VALUES 
(1, 29, 5, '5E', 20, '2012-10-31 13:58:40'), 
(2, 15, 5, '32B', 20, '2012-10-31 13:59:54'), 
(3, 29, 4, 'Q2A', 20, '2012-10-30 17:53:46'), 
(4, 29, 11, '6E', 20, '2012-10-02 20:06:39'), 
(5, 29, 11, 'C15', 20, '2012-10-16 20:06:30'), 
(6, 15, 11, '7A', 20, '2012-09-19 20:08:05'), 
(7, 29, 5, '3B', 20, '2012-09-14 20:08:12'), 
(8, 29, 13, '6E', 32, '2012-10-29 20:23:46'), 
(9, 29, 11, '7E', 18, '2012-10-30 14:35:14'), 
(10, 2, 5, '5E', 20, '2012-10-21 13:58:40'), 
(11, 2, 5, '5E', 20, '2012-10-30 13:58:40'), 
(12, 2, 5, '5E', 20, '2012-10-31 13:58:40'); 

Par mois

SELECT studentID, 
     DATE_FORMAT(`date`, '%M') `month`, 
     COUNT(studentID) totalMissed 
FROM hw_homework 
-- WHERE studentID = '' 
GROUP BY studentID, DATE_FORMAT(`date`, '%M') 

Par semaine

SELECT studentID, 
     DATE_FORMAT(`date`, '%U') `WeekNo`, 
     COUNT(studentID) totalMissed 
FROM hw_homework 
-- WHERE studentID = '' 
GROUP BY studentID, DATE_FORMAT(`date`, '%U') 

Merci à l'avance.

Répondre

1

A1:

SELECT studentID, 
     DATE_FORMAT(`date`, '%U') `WeekNo`, 
     COUNT(studentID) totalMissed 
FROM hw_homework 
WHERE DATE_FORMAT(`date`, '%U') = DATE_FORMAT(NOW(), '%U') 
-- AND studentID = '' 
GROUP BY studentID, DATE_FORMAT(`date`, '%U') 

A2:

SELECT studentID, 
     DATE_FORMAT(`date`, '%M') `WeekNo`, 
     COUNT(studentID) totalMissed 
FROM hw_homework 
WHERE DATE_FORMAT(`date`, '%M') = DATE_FORMAT(NOW(), '%M') 
-- AND studentID = '' 
GROUP BY studentID, DATE_FORMAT(`date`, '%M') 

A3:

SELECT studentID, 
     DATE_FORMAT(`date`, '%U') `WeekNo`, 
     COUNT(studentID) totalMissed 
FROM hw_homework he 
WHERE DATE_FORMAT(`date`, '%U') = (SELECT MAX(DATE_FORMAT(NOW(), '%U')) FROM hw_homework hi WHERE hi.studentID = he.studentID) 
-- AND studentID = '' 
GROUP BY studentID, DATE_FORMAT(`date`, '%U') 

A4:

SELECT studentID, 
     DATE_FORMAT(`date`, '%M') `WeekNo`, 
     COUNT(studentID) totalMissed 
FROM hw_homework he 
WHERE DATE_FORMAT(`date`, '%M') = (SELECT MAX(DATE_FORMAT(NOW(), '%M')) FROM hw_homework hi WHERE hi.studentID = he.studentID) 
-- AND studentID = '' 
GROUP BY studentID, DATE_FORMAT(`date`, '%M') 
Questions connexes