rewrite all signature into single query for sql2xls-files
authorDobrica Pavlinusic <dpavlin@rot13.org>
Sun, 29 Oct 2023 17:10:40 +0000 (18:10 +0100)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Sun, 29 Oct 2023 17:10:40 +0000 (18:10 +0100)
XX-signature/all-sigature.sql [new file with mode: 0644]

diff --git a/XX-signature/all-sigature.sql b/XX-signature/all-sigature.sql
new file mode 100644 (file)
index 0000000..6cc85de
--- /dev/null
@@ -0,0 +1,65 @@
+create temporary table callnumbers ( callnumber varchar(255) primary key, count int not null ) ;
+insert into callnumbers select itemcallnumber,count(itemcallnumber) from items where itemcallnumber is not null group by itemcallnumber ;
+
+
+-- Dodijeljene signature u skupini BB
+create temporary table t1 as
+select count(biblio.biblionumber) as count_biblio, 
+       items.itemcallnumber,
+       biblio.author,
+       biblio.title,
+       biblioitems.publicationyear,
+       biblioitems.number,
+       items.biblionumber,
+       items.copynumber
+from items 
+left join biblioitems on (items.biblioitemnumber=biblioitems.biblioitemnumber) 
+left join biblio on (biblioitems.biblionumber=biblio.biblionumber) 
+where
+       items.itemcallnumber is not null
+group by biblio.biblionumber 
+order by items.itemcallnumber ;
+-- 26 sec.
+
+create index i1 on t1(itemcallnumber) ;
+
+create temporary table t2 as
+select
+       substring(itemcallnumber,1,2) as file,
+       regexp_replace( substring(itemcallnumber,3,2),'^[^0-9][^0-9]','other') as sheet,
+       count_biblio as br_primjeraka, 
+       callnumbers.count as br_signatura, 
+       itemcallnumber,
+       author as autor,
+       title as naslov,
+       publicationyear as godina,
+       number as svezak,
+       biblionumber,
+       copynumber
+
+from t1 join callnumbers on (callnumbers.callnumber = itemcallnumber)
+where itemcallnumber rlike '^[ABCDEFMPS][A-Z]';
+
+-- cleanup seet names
+update t2 set sheet='other' where sheet not rlike '^[0-9][0-9]' ;
+
+-- select count(file),file,sheet from t2 group by file,sheet ;
+
+-- select count(file),file from t2 group by file ;
+
+-- query to produce tables
+
+select * from t2 ;
+
+
+select 
+       concat(file,'-dupli') as file,
+       sheet,
+       br_primjeraka,
+       br_signatura,
+       itemcallnumber,
+       autor, naslov, godina, svezak,
+       biblionumber,
+       copynumber
+from t2 where br_primjeraka < br_signatura;
+