[Koha] Time-based Circulation Statistics
George
gwilliams at nekls.org
Thu Sep 5 03:27:08 NZST 2019
Admire,
This is what I make available to the libraries in our system to show
hourly circulation activity during the previous calendar month - but
with a slight exception. Where this example uses "branchess.branchcode
LIKE '%'" I use "branchess.branchcode LIKE <<Choose your
library|branches>>" because we have 51 libraries using the same system.
If you've got more than one library, you can also change '%' to
'<<Choose your library|branches>>' so you're only seeing 1 library at a
time in the results.
George
---
SELECT
branchess.branchname,
ALL_STATS.DATE,
ALL_STATS.DAY,
Concat(ALL_STATS.HOUR_OF_DAY, ":00 - ", ALL_STATS.HOUR_OF_DAY, ":59")
AS HOUR,
CKO.COUNT AS CKO,
RENEWALS.COUNT AS RENEW,
RETURNS.COUNT AS RETURNS,
ALL_STATS.COUNT AS TOTAL
FROM
(SELECT
branches.branchcode,
branches.branchname
FROM
branches) branchess
LEFT JOIN (SELECT
statistics.branch,
DayName(statistics.datetime) AS DAY,
Date_Format(statistics.datetime, '%Y-%m-%d') AS DATE,
Hour(statistics.datetime) AS HOUR_OF_DAY,
count(*) AS COUNT
FROM
statistics
WHERE
(statistics.type = 'issue' OR
statistics.type = 'renew' OR
statistics.type = 'return') AND
Month(statistics.datetime) = Month(Now() - INTERVAL 1 MONTH) AND
Year(statistics.datetime) = Year(Now() - INTERVAL 1 MONTH)
GROUP BY
statistics.branch,
DayName(statistics.datetime),
Date_Format(statistics.datetime, '%Y-%m-%d'),
Hour(statistics.datetime)) ALL_STATS ON ALL_STATS.branch =
branchess.branchcode
LEFT JOIN (SELECT
statistics.branch,
DayName(statistics.datetime) AS DAY,
Date_Format(statistics.datetime, '%Y-%m-%d') AS DATE,
Hour(statistics.datetime) AS HOUR_OF_DAY,
count(*) AS COUNT
FROM
statistics
WHERE
statistics.type = 'return' AND
Month(statistics.datetime) = Month(Now() - INTERVAL 1 MONTH) AND
Year(statistics.datetime) = Year(Now() - INTERVAL 1 MONTH)
GROUP BY
statistics.branch,
DayName(statistics.datetime),
Date_Format(statistics.datetime, '%Y-%m-%d'),
Hour(statistics.datetime)) RETURNS ON RETURNS.branch =
branchess.branchcode AND
RETURNS.DATE = ALL_STATS.DATE AND
RETURNS.HOUR_OF_DAY = ALL_STATS.HOUR_OF_DAY
LEFT JOIN (SELECT
statistics.branch,
DayName(statistics.datetime) AS DAY,
Date_Format(statistics.datetime, '%Y-%m-%d') AS DATE,
Hour(statistics.datetime) AS HOUR_OF_DAY,
count(*) AS COUNT
FROM
statistics
WHERE
statistics.type = 'issue' AND
Month(statistics.datetime) = Month(Now() - INTERVAL 1 MONTH) AND
Year(statistics.datetime) = Year(Now() - INTERVAL 1 MONTH)
GROUP BY
statistics.branch,
DayName(statistics.datetime),
Date_Format(statistics.datetime, '%Y-%m-%d'),
Hour(statistics.datetime)) CKO ON CKO.branch =
branchess.branchcode AND
CKO.DATE = ALL_STATS.DATE AND
CKO.HOUR_OF_DAY = ALL_STATS.HOUR_OF_DAY
LEFT JOIN (SELECT
statistics.branch,
DayName(statistics.datetime) AS DAY,
Date_Format(statistics.datetime, '%Y-%m-%d') AS DATE,
Hour(statistics.datetime) AS HOUR_OF_DAY,
count(*) AS COUNT
FROM
statistics
WHERE
statistics.type = 'renew' AND
Month(statistics.datetime) = Month(Now() - INTERVAL 1 MONTH) AND
Year(statistics.datetime) = Year(Now() - INTERVAL 1 MONTH)
GROUP BY
statistics.branch,
DayName(statistics.datetime),
Date_Format(statistics.datetime, '%Y-%m-%d'),
Hour(statistics.datetime)) RENEWALS ON RENEWALS.branch =
branchess.branchcode AND
RENEWALS.DATE = ALL_STATS.DATE AND
RENEWALS.HOUR_OF_DAY = ALL_STATS.HOUR_OF_DAY
WHERE
branchess.branchcode LIKE '%'
GROUP BY
branchess.branchname,
ALL_STATS.DATE,
ALL_STATS.DAY,
Concat(ALL_STATS.HOUR_OF_DAY, ":00 - ", ALL_STATS.HOUR_OF_DAY, ":59"),
CKO.COUNT,
RENEWALS.COUNT,
RETURNS.COUNT,
ALL_STATS.COUNT,
ALL_STATS.HOUR_OF_DAY
ORDER BY
branchess.branchname,
ALL_STATS.DATE,
ALL_STATS.DAY,
ALL_STATS.HOUR_OF_DAY
---
On 9/1/2019 8:47 AM, Admire Mutsikiwa wrote:
> Hi
>
> We are interested in generating circulation statistics grouping then by
> hour of day so that we can establish the busiest times for circulation
> activities. I will appreciate any pointers on coming with such a SQL report.
>
>
>
>
>
> Kind Regards,
>
>
>
> Admire Mutsikiwa
> _______________________________________________
> Koha mailing list http://koha-community.org
> Koha at lists.katipo.co.nz
> https://lists.katipo.co.nz/mailman/listinfo/koha
--
George Williams
Next Search Catalog Coordinator
Send NEXT support e-mails to nexthelp at nekls.org
More information about the Koha
mailing list