-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On 01/28/07 15:18, garry saddington wrote:
> On Sun, 2007-01-28 at 09:57 -0600, Ron Johnson wrote:
>> On 01/28/07 07:05, garry saddington wrote:
[snip]
>> When you say "certain days", you mean "days of the week"?
>>
>> If so, create a view like:
>> CREATE VIEW V_DAY_ABSENCES AS
>> SELECT ENTERED,
>> AUTHORIZATION,
>> TIMEPERIOD,
>> DAYS,
>> STUDENTID,
>> DOW(CAST(ENTERED AS TIMESTAMP)) AS WEEKDAY
>> FROM ATTENDANCE
>> WHERE ABSENT = TRUE;
>>
>> Then, this query should do what you want:
>> SELECT STUDENTID,
>> TIMEPERIOD,
>> WEEKDAY,
>> COUNT(*)
>> FROM V_DAY_ABSENSES
>> GROUP BY STUDENTID,
>> TIMEPERIOD,
>> WEEKDAY
>> HAVING COUNT(*) > 3;
>>
> Thank you, this works great. But I have another problem: Is it possible
> to identify absences in consecutive weeks on the same day. EG. If a
> pupil has a pattern of having every monday AM off school, how could that
> be identified?
I'd use the T_CALENDAR table, modified for your purposes. (It's a
"static" that we create on every database.) We populate it with 22
years of dates. You'll have to write a small procedure to do it.
CREATE TABLE T_CALENDAR (
DATE_ANSI DATE,
YEAR_NUM SMALLINT,
MONTH_NUM SMALLINT,
DAY_OF_MONTH SMALLINT,
DAY_OF_WEEK SMALLINT,
JULIAN_DAY SMALLINT,
DAY_OF_WEEK SMALLINT,
IS_SCHOOL_DAY BOOL,
SCHOOL_YEAR SMALLINT, -- "2006" for the 2006/07 school year
SCHOOL_MONTH SMALLINT); -- 1 for August, 2 for September, etc
Then, join T_CALENDAR to ATTENDANCE, WHERE DATE_ANSI = ENTERED
AND DAY_OF_WEEK = 1
AND IS_SCHOOL_DAY = TRUE
AND SCHOOL_YEAR = 2006;
Making that join into a view and then, as Joris suggested, connect
it to a spreadsheet.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
iD8DBQFFvRmAS9HxQb37XmcRAvpcAKDQ7kjs9/rMb39w5JYRRTl65mYoKQCfVVUm
NTv6r6Kzu8T5D+SS8vxwFjs=
=VDXa
-----END PGP SIGNATURE-----