Browse Source

add maintenance sql

Daniel Sheffield 1 year ago
parent
commit
467fe06bea
1 changed files with 316 additions and 0 deletions
  1. 316 0
      maintenance.sql

+ 316 - 0
maintenance.sql

@@ -0,0 +1,316 @@
+UPDATE products SET unit_id = (SELECT unit_id FROM (SELECT count(t.id), defaults.unit_id, product_id
+FROM transactions t
+JOIN units ON unit_id = units.id
+JOIN unit_types_default defaults USING(unit_type_id)
+GROUP BY defaults.unit_id, product_id) q
+WHERE id = product_id
+ORDER BY count DESC
+LIMIT 1)
+WHERE unit_id IS NULL;
+
+BEGIN;
+--ALTER TABLE transactions DROP CONSTRAINT fk_product_id ;
+--ALTER TABLE transactions ADD CONSTRAINT fk_product_id FOREIGN KEY (product_id) REFERENCES products(id) ON UPDATE CASCADE;
+--ALTER TABLE conversions_complex DROP CONSTRAINT fk_product_id ;
+--ALTER TABLE conversions_complex ADD CONSTRAINT fk_product_id FOREIGN KEY (product_id) REFERENCES products(id) ON UPDATE CASCADE;
+--ALTER TABLE transactions DROP CONSTRAINT fk_store_id ;
+--ALTER TABLE transactions ADD CONSTRAINT fk_store_id FOREIGN KEY (store_id) REFERENCES stores(id) ON UPDATE CASCADE; 
+ALTER TABLE products DROP CONSTRAINT fk_category_id ;
+ALTER TABLE products ADD CONSTRAINT fk_category_id FOREIGN KEY (category_id) REFERENCES categories(id) ON UPDATE CASCADE;
+ALTER TABLE categories DROP CONSTRAINT fk_group_id ;
+ALTER TABLE categories ADD CONSTRAINT fk_group_id FOREIGN KEY (group_id) REFERENCES groups(id) ON UPDATE CASCADE; 
+DO
+$$
+DECLARE
+  item record;
+  next int;
+BEGIN
+  --SELECT 1 INTO next;
+  --FOR item IN (SELECT id FROM products ORDER BY id) LOOP
+  --  UPDATE products SET id = next WHERE id = item.id;
+  --  SELECT next+1 INTO next;
+  --END LOOP;
+  --SELECT 1 INTO next;
+  --FOR item IN (SELECT id FROM stores ORDER BY id) LOOP
+  --  UPDATE stores SET id = next WHERE id = item.id;
+  --  SELECT next+1 INTO next;
+  --END LOOP;
+  -- SELECT 1 INTO next;
+  -- FOR item IN (SELECT id FROM transactions ORDER BY id) LOOP
+    -- UPDATE transactions SET id = next WHERE id = item.id;
+    -- SELECT next+1 INTO next;
+  -- END LOOP;
+  SELECT 1 INTO next;
+  FOR item IN (SELECT id FROM categories ORDER BY id) LOOP
+    UPDATE categories SET id = next WHERE id = item.id;
+    SELECT next+1 INTO next;
+  END LOOP;
+  SELECT 1 INTO next;
+  FOR item IN (SELECT id FROM groups ORDER BY id) LOOP
+    UPDATE groups SET id = next WHERE id = item.id;
+    SELECT next+1 INTO next;
+  END LOOP;
+END;
+$$ LANGUAGE plpgsql;
+--ALTER TABLE transactions DROP CONSTRAINT fk_product_id ;
+--ALTER TABLE transactions ADD CONSTRAINT fk_product_id FOREIGN KEY (product_id) REFERENCES products(id);
+--ALTER TABLE conversions_complex DROP CONSTRAINT fk_product_id ;
+--ALTER TABLE conversions_complex ADD CONSTRAINT fk_product_id FOREIGN KEY (product_id) REFERENCES products(id);
+--ALTER TABLE transactions DROP CONSTRAINT fk_store_id ;
+--ALTER TABLE transactions ADD CONSTRAINT fk_store_id FOREIGN KEY (store_id) REFERENCES products(id);
+ALTER TABLE products DROP CONSTRAINT fk_category_id ;
+ALTER TABLE products ADD CONSTRAINT fk_category_id FOREIGN KEY (category_id) REFERENCES categories(id);
+ALTER TABLE categories DROP CONSTRAINT fk_group_id ;
+ALTER TABLE categories ADD CONSTRAINT fk_group_id FOREIGN KEY (group_id) REFERENCES groups(id); 
+ROLLBACK;
+grocery=> SELECT product_id, count(*) FROM transactions GROUP BY product_id ORDER BY product_id;
+ product_id | count
+------------+-------
+          2 |    57
+          3 |    23
+          4 |    32
+          5 |    75
+          6 |     5
+          7 |    61
+          8 |     9
+         19 |     2
+         20 |    56
+         21 |    26
+         22 |    45
+         23 |    33
+         30 |     1
+         31 |    31
+         32 |    42
+         33 |    13
+         34 |    45
+         35 |    30
+        141 |    10
+        142 |     3
+        143 |    12
+        144 |    10
+        145 |     6
+        148 |    32
+        149 |    27
+        208 |     1
+        312 |     3
+        313 |     8
+        314 |     2
+        315 |    14
+        317 |     4
+        318 |    12
+        319 |     8
+        320 |     2
+        321 |     6
+        322 |     2
+        489 |    12
+        490 |     8
+        496 |     2
+        497 |     2
+        501 |    31
+        502 |    10
+        533 |     4
+        534 |     1
+        535 |     3
+        536 |    22
+        537 |    22
+        538 |     2
+        539 |    19
+        540 |     1
+        541 |    14
+        542 |     3
+        544 |     9
+        545 |     8
+        546 |     5
+        547 |    12
+        548 |     7
+        549 |    17
+        551 |     2
+        552 |    15
+        553 |     2
+        554 |     2
+        555 |     3
+        556 |     3
+        557 |     6
+        559 |     2
+        563 |    11
+        564 |     1
+        565 |     5
+        566 |     2
+        567 |     5
+        568 |     5
+        569 |     2
+        570 |     1
+        571 |     6
+        572 |     4
+        695 |     4
+        701 |    10
+        704 |     5
+        708 |     2
+        712 |     2
+        715 |     1
+       1338 |     1
+       1339 |     2
+       1340 |     2
+       1341 |     6
+       1342 |     4
+       1362 |     2
+       1363 |     1
+       1364 |     1
+       1374 |     2
+       1922 |    14
+       1923 |     2
+       1924 |     1
+       1925 |     5
+       1926 |     2
+       1927 |     2
+       1928 |     1
+       1929 |     1
+       1930 |     6
+       1931 |     3
+       1944 |     3
+       1945 |     4
+       1946 |     5
+       1947 |     1
+       1948 |     1
+       1951 |     5
+       1965 |     5
+       1966 |     5
+       1991 |     2
+       1992 |     1
+       1993 |     9
+       1994 |     3
+       2005 |     1
+       2006 |     3
+       2118 |     2
+       2119 |     1
+       2120 |     1
+       2128 |     3
+       2129 |     2
+       2132 |     1
+       2149 |     3
+       2150 |     2
+       2151 |     1
+       2152 |     1
+       2155 |     1
+       2197 |    13
+       2198 |     3
+       2199 |    11
+       2200 |     6
+       2203 |     2
+       2206 |     3
+       2215 |     3
+       2216 |     3
+       2217 |     3
+       2226 |     2
+       2262 |     1
+       2263 |     1
+       2264 |     2
+       2267 |     2
+       2347 |     1
+       2377 |     1
+       2378 |     1
+       2379 |     1
+       2380 |     1
+       2381 |    12
+       2399 |     2
+       2400 |     1
+       2401 |     1
+       2404 |     2
+       2407 |     1
+       2411 |     1
+       2425 |     1
+       2426 |     4
+       2427 |     4
+       2436 |     1
+       2437 |     1
+       2448 |     1
+       2449 |     2
+       2450 |     1
+       2688 |     2
+       2711 |     2
+       2712 |     1
+       2713 |     3
+       2714 |     2
+       2715 |     2
+       2718 |     1
+       2722 |     2
+       2726 |     1
+       2731 |    22
+       2734 |     1
+       2737 |     2
+       2741 |     4
+       2746 |     1
+       2747 |     4
+       2750 |     1
+       2760 |     2
+       2765 |     3
+       2766 |     7
+       2769 |     4
+       2776 |     2
+       2777 |     1
+       2781 |     9
+       2784 |     1
+       2792 |     1
+       2793 |     1
+       2794 |     1
+       2842 |     1
+       2843 |     1
+       2861 |     1
+       2970 |     1
+       2971 |     1
+       2972 |     5
+       2976 |     1
+       3189 |     1
+       3190 |     1
+       3197 |     5
+       3198 |     1
+       3201 |     2
+       3204 |     2
+       3208 |     3
+       3220 |     2
+       3261 |     1
+       3262 |     1
+       3263 |     1
+       3264 |     1
+       3265 |     1
+       3266 |     1
+       3267 |     1
+       3279 |     1
+       3280 |     1
+       3286 |     1
+       3292 |     1
+       3307 |     1
+       3308 |     1
+(215 rows)
+grocery=>  SELECT store_id, count(*) FROM transactions GROUP BY store_id ORDER BY store_id;
+ store_id | count
+----------+-------
+        1 |   791
+        2 |   368
+        3 |     3
+        4 |    12
+        5 |    16
+        6 |    57
+        9 |    19
+       10 |    22
+       11 |     9
+       12 |     1
+       13 |    31
+       14 |     1
+       15 |    11
+       16 |     2
+       17 |     1
+       18 |     3
+       19 |     1
+       20 |    18
+       21 |     1
+       22 |     4
+       23 |     3
+       24 |     1
+       25 |    22
+       26 |     1
+       27 |     1
+       28 |     3
+       29 |     3
+       30 |     1
+(28 rows)