Guest User

Untitled

a guest
Jan 23rd, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.37 KB | None | 0 0
  1. table newdata
  2. chr = varchar(16) // название хромосомы
  3. left = bigint // левая координата паттерна в геноме
  4. right = bigint // правая координата паттерна в геноме
  5. count = int // число условно-одинаковых паттернов
  6.  
  7. table g38_genes
  8. id = bigint // уникальный идентификатор гена
  9. chr = varchar(16)
  10. left = bigint // левая координата гена в геноме
  11. right = bigint // правая координата гена в геноме
  12. priority = int // показатель приоритетности
  13.  
  14. CREATE temporary table `temp_pos`
  15. (`chr` varchar(16) NOT NULL,
  16. `pos` bigint(20) NOT NULL,
  17. `count` int(11) NOT NULL,
  18. UNIQUE KEY `chr_pos` (`chr`, `pos`) );
  19. INSERT INTO `temp_pos` (`chr`, `pos`, `count`)
  20. SELECT `chr`, `left` pos, `count` FROM `newdata`
  21. where `chr`=1 order by `left` limit 0,200
  22. ON DUPLICATE KEY UPDATE
  23. `temp_pos`.`count` = `temp_pos`.`count` + `newdata`.count ;
  24. INSERT INTO `temp_pos` (`chr`, `pos`, `count`)
  25. SELECT `chr`, `right` pos, `count` FROM `newdata`
  26. where `chr`=1 order by `right` limit 0,200
  27. ON DUPLICATE KEY UPDATE
  28. `temp_pos`.`count` = `temp_pos`.`count` + `newdata`.count ;
  29.  
  30. select A.*, B.`id`, B.`left`, B.`right`
  31. from `temp_pos` A, `g38_genes` B
  32. where A.`count` > 9 and A.`chr`=1 and B.`chr` = 1 and B.`priority` > 4
  33. and A.`pos` < B.`right` and A.`pos` > B.`left`
  34. order by A.`pos`;
  35.  
  36. SELECT `chr`, `pos`, SUM(`count`) `count`
  37. FROM
  38. (
  39. SELECT `chr`, `left` `pos`, SUM(`count`) `count`
  40. FROM newdata
  41. -- WHERE `chr`=1
  42. GROUP BY `chr`, `left`
  43. UNION ALL
  44. SELECT `chr`, `right` `pos`, SUM(`count`) `count`
  45. FROM newdata
  46. -- WHERE `chr`=1
  47. GROUP BY `chr`, `right`
  48. )
  49. GROUP BY `chr`, `pos`
  50.  
  51. SELECT A.*, B.`id`, B.`left`, B.`right`
  52. FROM (
  53. SELECT `chr`, `pos`, SUM(`count`) `count`
  54. FROM
  55. (
  56. SELECT `chr`, `left` `pos`, SUM(`count`) `count`
  57. FROM newdata
  58. -- WHERE `chr`=1
  59. GROUP BY `chr`, `left`
  60. UNION ALL
  61. SELECT `chr`, `right` `pos`, SUM(`count`) `count`
  62. FROM newdata
  63. -- WHERE `chr`=1
  64. GROUP BY `chr`, `right`
  65. )
  66. GROUP BY `chr`, `pos`
  67. ) A, `g38_genes` B
  68. WHERE A.`count` > 9
  69. -- AND A.`chr` = 1
  70. -- AND B.`chr` = 1
  71. AND B.`priority` > 4
  72. AND A.`pos` < B.`right`
  73. AND A.`pos` > B.`left`
  74. ORDER BY A.`pos`;
Add Comment
Please, Sign In to add comment