Stockholms universitetsbibliotek

Från Svenska kohanätverkets wiki
Hoppa till navigering Hoppa till sök

Vi har använt oss av runtime parameters. Läs mer om detta på Koha community SQL Reports Library [1]

Circulation

Antal lån via utlåningsmaskin

SELECT COUNT(s.itemnumber) AS antal
FROM statistics s
LEFT JOIN action_logs a ON (s.itemnumber=a.object AND s.datetime=a.timestamp)
WHERE s.branch = <<Välj enhet|branches>>
AND s.`type` = 'issue'
AND a.user = <<Skriv borrower id för utlåningsmaskin>>
AND date(datetime) BETWEEN <<Startdatum|date>>
AND <<Slutdatum|date>>

In Transit Material som ej kommit fram till sin enhet med tillägg homebranch och itemcallnumber

SELECT bt.frombranch, bt.tobranch, i.homebranch, i.itemcallnumber, i.barcode, b.title, b.author, bt.datesent
FROM branchtransfers bt
LEFT JOIN items i ON (bt.itemnumber = i.itemnumber)
LEFT JOIN biblio b ON (i.biblionumber = b.biblionumber)
WHERE bt.datesent <= DATE_SUB(CURDATE(),interval 2 week)
AND bt.datearrived IS NULL
AND i.itemlost NOT LIKE '4'
AND i.homebranch = <<HEMENHET|branches>>
GROUP BY bt.frombranch, bt.tobranch, i.homebranch, i.itemcallnumber, i.barcode, b.title, b.author, bt.datesent

De 50 mest lånade böckerna ur magasin som bör tas till öppen samling.

SELECT count(s.datetime) AS circs, b.title, b.author, i.barcode, i.itemcallnumber,i.datelastseen
FROM statistics s
LEFT JOIN items i ON (s.itemnumber=i.itemnumber)
LEFT JOIN biblio b ON (i.biblionumber=b.biblionumber)
WHERE DATE(s.datetime) > DATE_SUB(CURRENT_DATE(),INTERVAL 6 MONTH) 
AND DATE(s.datetime)<=CURRENT_DATE() 
AND s.itemnumber IS NOT NULL AND s.type = 'issue'
AND i.itype = <<Skriv item type|itemtypes>>
GROUP BY b.biblionumber 
ORDER BY circs DESC 
LIMIT 50

Låntagare med kö-böcker

SELECT bo.surname, 
       bo.firstname, 
       bo.phone, 
       bo.cardnumber, 
       iu.date_due, 
       bi.title, 
       bi.author, 
       it.itemcallnumber, 
       it.barcode, 
       it.homebranch, (TO_DAYS(curdate())-TO_DAYS( date_due)) AS 'days overdue' 
FROM reserves r
LEFT JOIN borrowers bo ON (bo.borrowernumber = r.borrowernumber) 
LEFT JOIN issues iu ON (iu.borrowernumber=bo.borrowernumber) 
LEFT JOIN items it ON (it.itemnumber=iu.itemnumber)
LEFT JOIN biblio bi ON (bi.biblionumber =it.biblionumber)	   
WHERE r.reservedate IS NOT NULL
AND date (r.reservedate) < DATE_SUB(CURRENT_DATE(),INTERVAL 1 DAY)
AND r.waitingdate IS NULL
AND (TO_DAYS(curdate())-TO_DAYS(date_due)) > '0' 
AND (TO_DAYS(curdate())-TO_DAYS(date_due)) < '7'
ORDER BY iu.date_due ASC 

Förkomna fjärrlån utlånade till andra bibliotek

SELECT b.title, b.author, 
i.itemcallnumber,i.barcode, 
v.lib AS 'lost', 
bo.firstname, 
bo.surname 
FROM items i 
JOIN biblio b ON (i.biblionumber=b.biblionumber) 
JOIN authorised_values v ON (i.itemlost=v.authorised_value) 
JOIN issues c ON (i.itemnumber=c.itemnumber) 
JOIN borrowers bo ON (bo.borrowernumber=c.borrowernumber)
WHERE v.lib='LONG OVERDUE (LOST)'
AND bo.categorycode = <<Fjärrlåns låntagarkategori|categorycode>>
ORDER BY v.lib

Låntagare som saknar epostadress

SELECT cardnumber, surname, firstname, dateexpiry 
FROM borrowers 
WHERE ' ' IN (email)

Utlån, Omlån, Återlämning - välj år och månad per enhet. Välj enhet samt år (t ex 2018) och Månad (t ex 05 för maj)

SELECT
      MONTH(datetime) AS Månad, 
      SUM( IF(type = 'issue', 1, 0 )) AS Utlån,
      SUM( IF(type = 'renew', 1, 0 )) AS Omlån,
      SUM( IF(type = 'return', 1, 0 )) AS Återlämning,
      COUNT(statistics.type) AS 'Total Transactions'
FROM  statistics
WHERE branch = <<Enhet|branches>>
AND YEAR(datetime) = <<Välj ÅR ÅÅÅÅ>> 
AND  MONTH(datetime) = <<Välj månad, tex 05 för maj>>
GROUP BY MONTH(datetime)

Läsesalslån av böcker med streckkod. OBS!! Att tidskrifter endast syns via Viola och då endast om de hämtas från magasin.

SELECT branch,
MONTH(datetime) AS Månad, 
SUM( IF(type = 'localuse', 1, 0 )) AS Läsesalslån
FROM statistics
WHERE branch =<<Enhet|branches>>
AND YEAR(datetime) = <<Välj ÅR ÅÅÅÅ>> 
AND MONTH(datetime) = <<Välj månad, tex 05 för maj>>

Material utlånat mellan vissa datum. Välj datum, enhet, location och call number

SELECT
i.itemcallnumber AS 'Call number',
b.author,
b.title,
i.barcode,
ExtractValue( bm.metadata, '//datafield[@tag=035]/subfield[@code="a" and contains(text(), "LIBRIS")]') AS 'LibrisID', 
b.biblionumber,
i.itemnumber,
b.copyrightdate,
i.itype AS 'Item type',
i.issues AS 'Antal utlån',
i.onloan AS 'Utlånad',
i.itemlost AS 'Saknad', 
i.datelastborrowed AS 'Senast utlånad',
i.datelastseen AS 'Senast sedd',
i.homebranch,
i.location
FROM items i
LEFT JOIN biblio_metadata bm ON (i.biblionumber=bm.biblionumber)
LEFT JOIN biblio b ON (bm.biblionumber=b.biblionumber)
WHERE i.datelastborrowed BETWEEN <<Utlån sedan|date>> AND <<Utlån till|date>>
AND i.homebranch = <<Välj enhet|branches>>
AND i.location = <<Välj location|LOC>>
AND i.itemcallnumber LIKE <<Skriv callnumber ex A%>>
ORDER BY itemcallnumber

Låntagare med mer än 24 omlån som alltså snart kommer att få sista krav och måste återlämna

SELECT b.cardnumber, it.barcode, i.renewals, i.date_due, it.homebranch
FROM issues i
LEFT JOIN borrowers b ON (i.borrowernumber=b.borrowernumber)
LEFT JOIN items it ON (i.itemnumber=it.itemnumber)
WHERE i.renewals > '24'
GROUP BY b.borrowernumber, it.barcode, i.date_due, it.homebranch

Böcker som lånats om mer än 24 ggr och alltså snart bör återlämnas

SELECT COUNT(*)
FROM issues i
WHERE i.renewals > '24'

Återlämnad per timme, dag, månad, år. Välj ett exakt datum för start och ett exakt för slut.

SELECT YEAR(datetime) AS Year, 
       MONTH(datetime) AS Month, 
       DAY(datetime) AS Day, 
       HOUR(datetime) AS Hour, 
       count(*) 
FROM statistics  
WHERE datetime BETWEEN <<Mellan|date>> AND <<Och|date>> 
AND type = 'return'
GROUP BY Year, Month, Day, Hour

Antal Utlån per år av böcker på svenska. Väldigt tung och långsam fråga!

SELECT substring( ExtractValue(metadata,'//controlfield[@tag="008"]'), 36, 3) AS Språk, COUNT(*) AS Antal 
FROM statistics s
LEFT JOIN items i ON (s.itemnumber=i.itemnumber)
LEFT JOIN biblio b ON (i.biblionumber=b.biblionumber)
LEFT JOIN biblio_metadata bm ON (b.biblionumber=bm.biblionumber)
WHERE s.`type`='issue'
AND YEAR(datetime) = <<Välj ÅR ÅÅÅÅ>> 
GROUP BY Språk 
HAVING Språk = 'swe'

Antal utlån av böcker på nationellt minoritetsspråk.Väldigt tung och långsam fråga!

SELECT substring( ExtractValue(metadata,'//controlfield[@tag="008"]'), 36, 3) AS Språk, COUNT(*) AS Antal 
FROM statistics s
LEFT JOIN items i ON (s.itemnumber=i.itemnumber)
LEFT JOIN biblio b ON (i.biblionumber=b.biblionumber)
LEFT JOIN biblio_metadata bm ON (b.biblionumber=bm.biblionumber)
WHERE s.`type`='issue'
AND YEAR(datetime) = <<Välj ÅR ÅÅÅÅ>> 
GROUP BY Språk 
HAVING ( Språk = 'fin' OR Språk = 'smi' OR Språk = '9mk' OR Språk = 'rom' OR Språk = 'yid' )

Antal utlån av böcker på utländska språk. Väldigt tung och långsam fråga!

SELECT SUBSTRING(ExtractValue(metadata, '//controlfield[@tag="008"]'), 36, 3) != 'swe' 
AND SUBSTRING(ExtractValue(metadata, '//controlfield[@tag="008"]'), 36, 3) != 'fin' 
AND SUBSTRING(ExtractValue(metadata, '//controlfield[@tag="008"]'), 36, 3) != 'smi' 
AND SUBSTRING(ExtractValue(metadata, '//controlfield[@tag="008"]'), 36, 3) != '9mk' 
AND SUBSTRING(ExtractValue(metadata, '//controlfield[@tag="008"]'), 36, 3) != 'rom' 
AND SUBSTRING(ExtractValue(metadata, '//controlfield[@tag="008"]'), 36, 3) != 'yid',
COUNT(*) AS Antal
FROM statistics s
LEFT JOIN items i ON (s.itemnumber=i.itemnumber)
LEFT JOIN biblio b ON (i.biblionumber=b.biblionumber)
LEFT JOIN biblio_metadata bm ON (b.biblionumber=bm.biblionumber)
WHERE s.`type`='issue'
AND YEAR(datetime) = <<Välj ÅR ÅÅÅÅ>>

Antal Items per Enhet

SELECT COUNT(*)
FROM items i
LEFT JOIN biblio_metadata bm ON (i.biblionumber=bm.biblionumber)
WHERE NOT(SUBSTRING(ExtractValue(bm.metadata, '//leader'),8,1) = 's'
AND SUBSTRING(ExtractValue(bm.metadata, '//controlfield[@tag="008"]'),22,1) = 'p')
AND i.homebranch = <<Välj enhet|branches>>

Samlingar

Statistikrapporter som Stockholms universitetsbibliotek funnit användbara i samband översyn av samlingarna, bland annat inför genomförande av en större gallringsinsats. Se även Lånestatistik Bibliotek Mellansjö för andra sätt att ta ut statestik för utlån och nyförvärv. Du kan behöva ändra frågorna utifrån egna behov. Exempelvis: LibrisID - strängen funkar om man har LibrisID i 035, men kan behöva ändra till 001 samt då ta bort: and contains(text(), "LIBRIS")

Bestånd utifrån Dewey decimalklassifikation (DDK)i den bibliografiska posten (fält 082) på vald enhet (homebranch), location

SELECT
i.itemcallnumber,
b.author,
b.title,
i.barcode,
ExtractValue (bm.metadata,'//datafield[@tag="035"]/subfield[@code="a" and contains(text(), "LIBRIS")]') AS 'LibrisID',
ExtractValue(bm.metadata, '//datafield[@tag="082"]/subfield[@code="a"]') AS 'Dewey',
ExtractValue(bm.metadata, '//datafield[@tag="084"]/subfield[@code="a"]') AS 'SAB',
b.copyrightdate,
i.itype AS 'Item type',
i.onloan AS 'Utlånad',
i.itemlost,
i.homebranch,
i.location,
b.biblionumber,
i.itemnumber
FROM items i
LEFT JOIN biblio_metadata bm ON (i.biblionumber=bm.biblionumber)
LEFT JOIN biblio b ON (bm.biblionumber=b.biblionumber)
WHERE i.homebranch = <<Välj enhet|branches>> 
AND i.location = <<Välj location|LOC>>
AND ExtractValue(bm.metadata, '//datafield[@tag="082"]/subfield[@code="a"]') LIKE <<Skriv början på Deweykod ex 839%>>
ORDER BY i.itemcallnumber