maintenance.sql 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316
  1. UPDATE products SET unit_id = (SELECT unit_id FROM (SELECT count(t.id), defaults.unit_id, product_id
  2. FROM transactions t
  3. JOIN units ON unit_id = units.id
  4. JOIN unit_types_default defaults USING(unit_type_id)
  5. GROUP BY defaults.unit_id, product_id) q
  6. WHERE id = product_id
  7. ORDER BY count DESC
  8. LIMIT 1)
  9. WHERE unit_id IS NULL;
  10. BEGIN;
  11. --ALTER TABLE transactions DROP CONSTRAINT fk_product_id ;
  12. --ALTER TABLE transactions ADD CONSTRAINT fk_product_id FOREIGN KEY (product_id) REFERENCES products(id) ON UPDATE CASCADE;
  13. --ALTER TABLE conversions_complex DROP CONSTRAINT fk_product_id ;
  14. --ALTER TABLE conversions_complex ADD CONSTRAINT fk_product_id FOREIGN KEY (product_id) REFERENCES products(id) ON UPDATE CASCADE;
  15. --ALTER TABLE transactions DROP CONSTRAINT fk_store_id ;
  16. --ALTER TABLE transactions ADD CONSTRAINT fk_store_id FOREIGN KEY (store_id) REFERENCES stores(id) ON UPDATE CASCADE;
  17. ALTER TABLE products DROP CONSTRAINT fk_category_id ;
  18. ALTER TABLE products ADD CONSTRAINT fk_category_id FOREIGN KEY (category_id) REFERENCES categories(id) ON UPDATE CASCADE;
  19. ALTER TABLE categories DROP CONSTRAINT fk_group_id ;
  20. ALTER TABLE categories ADD CONSTRAINT fk_group_id FOREIGN KEY (group_id) REFERENCES groups(id) ON UPDATE CASCADE;
  21. DO
  22. $$
  23. DECLARE
  24. item record;
  25. next int;
  26. BEGIN
  27. --SELECT 1 INTO next;
  28. --FOR item IN (SELECT id FROM products ORDER BY id) LOOP
  29. -- UPDATE products SET id = next WHERE id = item.id;
  30. -- SELECT next+1 INTO next;
  31. --END LOOP;
  32. --SELECT 1 INTO next;
  33. --FOR item IN (SELECT id FROM stores ORDER BY id) LOOP
  34. -- UPDATE stores SET id = next WHERE id = item.id;
  35. -- SELECT next+1 INTO next;
  36. --END LOOP;
  37. -- SELECT 1 INTO next;
  38. -- FOR item IN (SELECT id FROM transactions ORDER BY id) LOOP
  39. -- UPDATE transactions SET id = next WHERE id = item.id;
  40. -- SELECT next+1 INTO next;
  41. -- END LOOP;
  42. SELECT 1 INTO next;
  43. FOR item IN (SELECT id FROM categories ORDER BY id) LOOP
  44. UPDATE categories SET id = next WHERE id = item.id;
  45. SELECT next+1 INTO next;
  46. END LOOP;
  47. SELECT 1 INTO next;
  48. FOR item IN (SELECT id FROM groups ORDER BY id) LOOP
  49. UPDATE groups SET id = next WHERE id = item.id;
  50. SELECT next+1 INTO next;
  51. END LOOP;
  52. END;
  53. $$ LANGUAGE plpgsql;
  54. --ALTER TABLE transactions DROP CONSTRAINT fk_product_id ;
  55. --ALTER TABLE transactions ADD CONSTRAINT fk_product_id FOREIGN KEY (product_id) REFERENCES products(id);
  56. --ALTER TABLE conversions_complex DROP CONSTRAINT fk_product_id ;
  57. --ALTER TABLE conversions_complex ADD CONSTRAINT fk_product_id FOREIGN KEY (product_id) REFERENCES products(id);
  58. --ALTER TABLE transactions DROP CONSTRAINT fk_store_id ;
  59. --ALTER TABLE transactions ADD CONSTRAINT fk_store_id FOREIGN KEY (store_id) REFERENCES products(id);
  60. ALTER TABLE products DROP CONSTRAINT fk_category_id ;
  61. ALTER TABLE products ADD CONSTRAINT fk_category_id FOREIGN KEY (category_id) REFERENCES categories(id);
  62. ALTER TABLE categories DROP CONSTRAINT fk_group_id ;
  63. ALTER TABLE categories ADD CONSTRAINT fk_group_id FOREIGN KEY (group_id) REFERENCES groups(id);
  64. ROLLBACK;
  65. grocery=> SELECT product_id, count(*) FROM transactions GROUP BY product_id ORDER BY product_id;
  66. product_id | count
  67. ------------+-------
  68. 2 | 57
  69. 3 | 23
  70. 4 | 32
  71. 5 | 75
  72. 6 | 5
  73. 7 | 61
  74. 8 | 9
  75. 19 | 2
  76. 20 | 56
  77. 21 | 26
  78. 22 | 45
  79. 23 | 33
  80. 30 | 1
  81. 31 | 31
  82. 32 | 42
  83. 33 | 13
  84. 34 | 45
  85. 35 | 30
  86. 141 | 10
  87. 142 | 3
  88. 143 | 12
  89. 144 | 10
  90. 145 | 6
  91. 148 | 32
  92. 149 | 27
  93. 208 | 1
  94. 312 | 3
  95. 313 | 8
  96. 314 | 2
  97. 315 | 14
  98. 317 | 4
  99. 318 | 12
  100. 319 | 8
  101. 320 | 2
  102. 321 | 6
  103. 322 | 2
  104. 489 | 12
  105. 490 | 8
  106. 496 | 2
  107. 497 | 2
  108. 501 | 31
  109. 502 | 10
  110. 533 | 4
  111. 534 | 1
  112. 535 | 3
  113. 536 | 22
  114. 537 | 22
  115. 538 | 2
  116. 539 | 19
  117. 540 | 1
  118. 541 | 14
  119. 542 | 3
  120. 544 | 9
  121. 545 | 8
  122. 546 | 5
  123. 547 | 12
  124. 548 | 7
  125. 549 | 17
  126. 551 | 2
  127. 552 | 15
  128. 553 | 2
  129. 554 | 2
  130. 555 | 3
  131. 556 | 3
  132. 557 | 6
  133. 559 | 2
  134. 563 | 11
  135. 564 | 1
  136. 565 | 5
  137. 566 | 2
  138. 567 | 5
  139. 568 | 5
  140. 569 | 2
  141. 570 | 1
  142. 571 | 6
  143. 572 | 4
  144. 695 | 4
  145. 701 | 10
  146. 704 | 5
  147. 708 | 2
  148. 712 | 2
  149. 715 | 1
  150. 1338 | 1
  151. 1339 | 2
  152. 1340 | 2
  153. 1341 | 6
  154. 1342 | 4
  155. 1362 | 2
  156. 1363 | 1
  157. 1364 | 1
  158. 1374 | 2
  159. 1922 | 14
  160. 1923 | 2
  161. 1924 | 1
  162. 1925 | 5
  163. 1926 | 2
  164. 1927 | 2
  165. 1928 | 1
  166. 1929 | 1
  167. 1930 | 6
  168. 1931 | 3
  169. 1944 | 3
  170. 1945 | 4
  171. 1946 | 5
  172. 1947 | 1
  173. 1948 | 1
  174. 1951 | 5
  175. 1965 | 5
  176. 1966 | 5
  177. 1991 | 2
  178. 1992 | 1
  179. 1993 | 9
  180. 1994 | 3
  181. 2005 | 1
  182. 2006 | 3
  183. 2118 | 2
  184. 2119 | 1
  185. 2120 | 1
  186. 2128 | 3
  187. 2129 | 2
  188. 2132 | 1
  189. 2149 | 3
  190. 2150 | 2
  191. 2151 | 1
  192. 2152 | 1
  193. 2155 | 1
  194. 2197 | 13
  195. 2198 | 3
  196. 2199 | 11
  197. 2200 | 6
  198. 2203 | 2
  199. 2206 | 3
  200. 2215 | 3
  201. 2216 | 3
  202. 2217 | 3
  203. 2226 | 2
  204. 2262 | 1
  205. 2263 | 1
  206. 2264 | 2
  207. 2267 | 2
  208. 2347 | 1
  209. 2377 | 1
  210. 2378 | 1
  211. 2379 | 1
  212. 2380 | 1
  213. 2381 | 12
  214. 2399 | 2
  215. 2400 | 1
  216. 2401 | 1
  217. 2404 | 2
  218. 2407 | 1
  219. 2411 | 1
  220. 2425 | 1
  221. 2426 | 4
  222. 2427 | 4
  223. 2436 | 1
  224. 2437 | 1
  225. 2448 | 1
  226. 2449 | 2
  227. 2450 | 1
  228. 2688 | 2
  229. 2711 | 2
  230. 2712 | 1
  231. 2713 | 3
  232. 2714 | 2
  233. 2715 | 2
  234. 2718 | 1
  235. 2722 | 2
  236. 2726 | 1
  237. 2731 | 22
  238. 2734 | 1
  239. 2737 | 2
  240. 2741 | 4
  241. 2746 | 1
  242. 2747 | 4
  243. 2750 | 1
  244. 2760 | 2
  245. 2765 | 3
  246. 2766 | 7
  247. 2769 | 4
  248. 2776 | 2
  249. 2777 | 1
  250. 2781 | 9
  251. 2784 | 1
  252. 2792 | 1
  253. 2793 | 1
  254. 2794 | 1
  255. 2842 | 1
  256. 2843 | 1
  257. 2861 | 1
  258. 2970 | 1
  259. 2971 | 1
  260. 2972 | 5
  261. 2976 | 1
  262. 3189 | 1
  263. 3190 | 1
  264. 3197 | 5
  265. 3198 | 1
  266. 3201 | 2
  267. 3204 | 2
  268. 3208 | 3
  269. 3220 | 2
  270. 3261 | 1
  271. 3262 | 1
  272. 3263 | 1
  273. 3264 | 1
  274. 3265 | 1
  275. 3266 | 1
  276. 3267 | 1
  277. 3279 | 1
  278. 3280 | 1
  279. 3286 | 1
  280. 3292 | 1
  281. 3307 | 1
  282. 3308 | 1
  283. (215 rows)
  284. grocery=> SELECT store_id, count(*) FROM transactions GROUP BY store_id ORDER BY store_id;
  285. store_id | count
  286. ----------+-------
  287. 1 | 791
  288. 2 | 368
  289. 3 | 3
  290. 4 | 12
  291. 5 | 16
  292. 6 | 57
  293. 9 | 19
  294. 10 | 22
  295. 11 | 9
  296. 12 | 1
  297. 13 | 31
  298. 14 | 1
  299. 15 | 11
  300. 16 | 2
  301. 17 | 1
  302. 18 | 3
  303. 19 | 1
  304. 20 | 18
  305. 21 | 1
  306. 22 | 4
  307. 23 | 3
  308. 24 | 1
  309. 25 | 22
  310. 26 | 1
  311. 27 | 1
  312. 28 | 3
  313. 29 | 3
  314. 30 | 1
  315. (28 rows)