TeeZ0NE

sql_notes_scripts

Oct 25th, 2018
177
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 13.48 KB | None | 0 0
  1. -- Get count tickets and summary replies from start of month
  2. SELECT sysadmin_niks_id, COUNT(ticket_id), SUM(replies)
  3. FROM sysadmin_activities
  4. WHERE (lastreply BETWEEN  DATE_FORMAT(NOW() ,'%Y-%m-01') AND NOW() )
  5. GROUP BY sysadmin_niks_id;
  6.  
  7. -- #test count of tickets by user
  8. /* snik_id
  9. select name,sysadmin_niks_id,COUNT(DISTINCT ticket_id)AS tickets_count, COUNT(lastreply) AS replies_count,SUM(time_uses)  AS time_sum
  10. FROM sysadmin_activities
  11. LEFT JOIN sysadmin_niks AS sniks ON sniks.id=sysadmin_niks_id
  12. LEFT JOIN users ON users.id=user_id
  13. WHERE sysadmin_niks_id IN (3,7)
  14. AND (lastreply between  DATE_FORMAT(NOW() ,'%Y-%m-01') AND NOW() )
  15. GROUP BY (sysadmin_niks_id);
  16. */
  17.  
  18. SELECT users.name,COUNT(DISTINCT ticket_id)AS tickets_count, COUNT(sact.lastreply) AS replies_count,SUM(time_uses)  AS time_sum, SUM(serv.compl)
  19. FROM sysadmin_activities AS sact
  20. LEFT JOIN sysadmin_niks AS sniks ON sniks.id=sysadmin_niks_id
  21. LEFT JOIN users ON users.id=user_id
  22. JOIN tickets ON tickets.id=ticket_id
  23. RIGHT JOIN services AS serv ON tickets.service_id=serv.id
  24. WHERE sysadmin_niks_id IN (
  25.     SELECT sniks.id FROM users
  26.     LEFT JOIN sysadmin_niks AS sniks ON sniks.user_id=users.id
  27. WHERE users.id=2
  28. )
  29. AND (sact.lastreply BETWEEN  DATE_FORMAT(NOW() ,'%Y-%m-01') AND NOW() )
  30. GROUP BY (users.name) ORDER BY tickets_count DESC, replies_count DESC;
  31.  
  32. -- get summary and comp count
  33. SELECT u.name, COUNT(DISTINCT ticket_id) AS tickets_count, COUNT(sact.lastreply) AS replies_count ,SUM(time_uses), SUM(serv.compl)
  34. -- SELECT u.name, ticket_id AS tickets_count, sact.lastreply AS replies_count ,time_uses, services.compl
  35. FROM sysadmin_activities AS sact
  36. LEFT JOIN sysadmin_niks AS sniks ON sniks.id=sysadmin_niks_id
  37. LEFT JOIN users AS u ON u.id=user_id
  38. JOIN tickets ON tickets.id=ticket_id
  39. RIGHT JOIN services AS serv ON tickets.service_id=serv.id
  40. WHERE sysadmin_niks_id IN (
  41.     SELECT sniks.id FROM users
  42.     LEFT JOIN sysadmin_niks AS sniks ON sniks.user_id=users.id
  43. -- WHERE users.id=2
  44. )
  45. ## curr MONTH
  46. -- AND (sact.lastreply between  DATE_FORMAT(NOW() ,'%Y-%m-01') AND NOW() )
  47. # LAST MONTH
  48. AND (sact.lastreply BETWEEN  DATE_FORMAT('2018-07-01' ,'%Y-%m-01') AND DATE_FORMAT('2018-09-31','%Y-%m-%d') )
  49. GROUP BY (name) ORDER BY tickets_count DESC, replies_count DESC;
  50. -- /summary and compl count
  51. -- ORM
  52. /*
  53.  * DB::table('sysadmin_activities')->
  54.  * select(DB::raw('sysadmin_niks_id, COUNT(DISTINCT ticket_id) AS tickets_count,COUNT(lastreply) AS replies_count, SUM(time_uses) AS time_sum'))->
  55.  * whereBetween('lastreply',[\Carbon\Carbon::now()->startOfMonth(),\Carbon\Carbon::now()])->
  56.  * where('sysadmin_niks_id',2)->
  57.  * groupBy('sysadmin_niks_id')->
  58. -- do whatever
  59. */
  60. /*
  61.  * 4 all users
  62.  DB::table('sysadmin_activities')->
  63.   select(DB::raw('name, COUNT(DISTINCT ticket_id) AS tickets_count,COUNT(lastreply) AS replies_count, SUM(time_uses) AS time_sum'))->
  64.   leftJoin('sysadmin_niks as sniks','sniks.id','=','sysadmin_niks_id')->
  65.   leftJoin('users','users.id','=','user_id')->
  66.   whereIn('sysadmin_niks_id',function($q){
  67.   $q->select(DB::raw('sniks.id from users left join sysadmin_niks as sniks on sniks.user_id=users.id'));
  68.   })->
  69.   whereBetween('lastreply',[\Carbon\Carbon::now()->startOfMonth(),\Carbon\Carbon::now()])->
  70.   groupBy('name')->
  71.   do whatever
  72.   */
  73.  
  74. -- get sniks.id 4 user
  75. SELECT sniks.id FROM users
  76. LEFT JOIN sysadmin_niks AS sniks ON sniks.user_id=users.id
  77. WHERE users.id=2;
  78.  
  79.  
  80. -- /test count of tickets by user
  81.  
  82. UPDATE tickets SET user_assign_id=2 WHERE ticketid=10597 AND service_id=1;
  83.  
  84. SELECT COUNT(last_replier_nik_id) AS serv_1 FROM tickets
  85. WHERE service_id=1
  86. UNION SELECT COUNT(last_replier_nik_id) AS serv_2 FROM tickets
  87. WHERE service_id=2;
  88.  
  89. -- get rate 4 users or curr user in current service beetwen in date
  90. SELECT services.name AS service, COUNT(DISTINCT sact.ticket_id) AS tickets_count,COUNT(sact.lastreply) AS replies_count, u.name AS user_name, SUM(sact.time_uses) AS sum_time, COUNT(DISTINCT ticket_id)*compl AS rate
  91. FROM sysadmin_activities AS sact
  92. RIGHT JOIN tickets AS t ON sact.ticket_id=t.id
  93. RIGHT JOIN services ON t.service_id=services.id
  94. LEFT JOIN sysadmin_niks AS sniks ON sniks.id=sact.sysadmin_niks_id
  95. LEFT JOIN users AS u ON u.id=sniks.user_id
  96. WHERE sact.sysadmin_niks_id IN(SELECT sniks.id FROM users LEFT JOIN sysadmin_niks AS sniks ON sniks.user_id=users.id
  97. WHERE users.id=1
  98. )
  99. AND (sact.lastreply BETWEEN  DATE_FORMAT('2018-07-01' ,'%Y-%m-%d') AND DATE_FORMAT('2018-09-31','%Y-%m-%d') )
  100. AND services.id=1
  101. GROUP BY service, user_name
  102. ORDER BY tickets_count DESC, rate DESC;
  103. -- /get rate 4 users or curr user in current service beetwen in date
  104.  
  105.  
  106. UPDATE services SET compl=0.8 WHERE services.id=1;
  107.  
  108. -- get rate without summing
  109. SELECT services.name AS service, sact.ticket_id, sact.lastreply AS replies_count, u.name AS user_name, sact.time_uses
  110. FROM sysadmin_activities AS sact
  111. RIGHT JOIN tickets AS t ON sact.ticket_id=t.id
  112. RIGHT JOIN services ON t.service_id=services.id
  113. LEFT JOIN sysadmin_niks AS sniks ON sniks.id=sact.sysadmin_niks_id
  114. LEFT JOIN users AS u ON u.id=sniks.user_id
  115. WHERE sact.sysadmin_niks_id IN(SELECT sniks.id FROM users LEFT JOIN sysadmin_niks AS sniks ON sniks.user_id=users.id
  116. WHERE users.id=1
  117. )
  118. AND (sact.lastreply BETWEEN  DATE_FORMAT('2018-07-01' ,'%Y-%m-%d') AND DATE_FORMAT('2018-07-31','%Y-%m-%d') )
  119. AND services.id=1;
  120. -- /get rate without summing
  121.  
  122. SELECT id FROM tickets WHERE service_id=1 LIMIT 1;
  123.  
  124. SELECT t.id FROM tickets AS t
  125. WHERE t.is_closed=0 AND t.last_replier_nik_id=0 AND t.user_assign_id IS NULL;
  126.  
  127. -- add and drop indexes
  128. CREATE INDEX ticket_open ON tickets (is_closed);
  129. DROP INDEX ticket_open ON tickets;
  130.  
  131. SELECT * FROM tickets USE INDEX(ticket_open);
  132.  
  133. DROP DATABASE crm_tickets_db;
  134. CREATE DATABASE crm_tickets_db;
  135. GRANT ALL PRIVILEGES ON crm_tickets_db.* TO 'boss'@'localhost';
  136. FLUSH PRIVILEGES;
  137. UPDATE tickets SET user_assign_id=NULL WHERE user_assign_id=9;
  138.  
  139.  
  140. -- talbe like
  141. CREATE DATABASE test;
  142. USE test;
  143. CREATE TABLE IF NOT EXISTS users (
  144.      id_1 MEDIUMINT NOT NULL AUTO_INCREMENT,
  145.      name CHAR(30) NOT NULL,
  146.      PRIMARY KEY (id_1)
  147. );
  148. INSERT INTO users (name) VALUES('bob'),('mike'),('george'),('steve');
  149. SELECT * FROM test.users;
  150. CREATE TABLE `like` (
  151.     id_2 MEDIUMINT,
  152.     id_3 MEDIUMINT,
  153. FOREIGN KEY(id_2) REFERENCES users(id_1) ON UPDATE CASCADE ON DELETE CASCADE,
  154. FOREIGN KEY(id_3) REFERENCES users(id_1) ON UPDATE CASCADE ON DELETE CASCADE
  155. );
  156. ALTER TABLE `like`
  157. ADD CONSTRAINT fk_id_2
  158. FOREIGN KEY(id_2) REFERENCES users(id_1);
  159. DROP TABLE `like`;
  160.  
  161. INSERT INTO `like` VALUES(1,2),(1,3),(2,3);
  162. SELECT * FROM `like`;
  163.  
  164. SELECT u.name,id_3,id_1 FROM `like` AS l
  165. RIGHT JOIN users AS u ON l.id_3=u.id_1
  166. -- RIGHT JOIN users  ON l.id_2=users.id_1
  167. WHERE l.id_3 IS NULL;
  168.  
  169. SELECT * FROM users
  170. LEFT JOIN `like` AS l ON l.id_3=id_1
  171. WHERE l.id_3 IS NULL;
  172. DROP DATABASE test;
  173.  
  174. INSERT INTO sysadmin_niks(service_id,admin_nik,user_id) VALUES(1,'Mooryan',1);
  175.  
  176. -- admin activities
  177. INSERT INTO sysadmin_activities(sysadmin_niks_id,ticket_id,lastreply,time_uses) VALUES(2,146,'2018-08-27 08:45:31',15);
  178. UPDATE sysadmin_activities SET `lastreply`='2018-09-27 08:45:31' WHERE ticket_id=146;
  179. -- service month statistic
  180. SELECT DISTINCT(t.id), COUNT(DISTINCT(sact.ticket_id)) AS t_count,t.subject,s.name,t.ticketid, SUM(sact.time_uses) AS sum_time FROM tickets AS t
  181. RIGHT JOIN sysadmin_activities AS sact ON sact.ticket_id=t.id
  182. JOIN services AS s ON t.service_id=s.id
  183. -- WHERE created_at>= subdate(curdate(),1)
  184. -- yesterday
  185. -- WHERE sact.lastreply>=SUBDATE(NOW(),2)
  186. WHERE (t.created_at BETWEEN DATE_FORMAT('2018-10-01' ,'%Y-%m-%d') AND last_day('2018-10-01'))
  187. -- AND t.service_id=1
  188. GROUP BY t.id ORDER BY sum_time;
  189.  
  190. SELECT s.id,s.name,COUNT(t.id),SUM(sact.time_uses) FROM services AS s
  191. LEFT JOIN tickets AS t ON t.service_id=s.id
  192. JOIN sysadmin_activities AS sact ON sact.ticket_id=t.id
  193. WHERE s.id = 4 AND sact.lastreply BETWEEN
  194. GROUP BY s.name;
  195.  
  196. -- service statistic by yesterday
  197. SELECT DISTINCT(t.id),t.subject,s.name,t.ticketid, SUM(sact.time_uses) FROM tickets AS t
  198. LEFT JOIN sysadmin_activities AS sact ON sact.ticket_id=t.id
  199. JOIN services AS s ON t.service_id=s.id
  200. -- WHERE sact.lastreply= curdate()
  201. AND t.service_id=4
  202. GROUP BY t.id;
  203.  
  204. -- date
  205. SELECT id FROM tickets WHERE created_at
  206. -- BETWEEN DATE_FORMAT(NOW() ,'%Y-%m-01') AND NOW();
  207. -- BETWEEN DATE_FORMAT('2018-09-01','%Y-%m-%d') AND DATE_FORMAT('2018-09-30','%Y-%m-%d');
  208. --  BETWEEN DATE_FORMAT('2018-09-01','%Y-%m-%d') AND NOW();
  209.  BETWEEN DATE_FORMAT('2018-09-01','%Y-%m-%d') AND LAST_DAY('2018-09-01');
  210.  
  211.  SELECT last_day(now());
  212. SELECT SUBDATE(CURDATE(),10);
  213. SELECT SUBDATE(NOW(),1);
  214. SELECT NOW() - INTERVAL 10 DAY;
  215. SELECT id, lastreply FROM sysadmin_activities
  216. WHERE lastreply BETWEEN DATE_FORMAT(CURDATE(),'%Y-%m-%d 00:00:00') AND now();
  217.  
  218. SELECT id, lastreply FROM sysadmin_activities
  219. WHERE lastreply BETWEEN DATE_FORMAT(subdate(CURDATE(),1),'%Y-%m-%d 00:00:00') AND DATE_FORMAT(subdate(CURDATE(),1),'%Y-%m-%d 23:59:59');
  220.  
  221.  
  222. SELECT SUM(tmp.sum_time_uses) AS total FROM (
  223. SELECT SUM(time_uses) sum_time_uses FROM sysadmin_activities WHERE  ticket_id=3) AS tmp;
  224.  
  225. SELECT NOW();
  226. SELECT DATE_FORMAT(CURDATE(),'%Y-%m-%d 00:00:00')
  227. UNION
  228. SELECT SUM(tmp.sum_time_uses) AS total FROM (
  229. SELECT SUM(time_uses) sum_time_uses FROM sysadmin_activities WHERE  ticket_id=3) AS tmp;
  230.  
  231.  
  232. SELECT SUM(time_uses) sum_time_uses FROM sysadmin_activities WHERE  ticket_id=3;
  233.  
  234. -- create table 4 emailing
  235. CREATE TABLE IF NOT EXISTS emails(
  236. id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  237. email VARCHAR(86) NOT NULL UNIQUE,
  238. is_main TINYINT(1) UNSIGNED DEFAULT 0
  239. );
  240.  
  241. CREATE TABLE IF NOT EXISTS intervals(
  242. id TINYINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  243. name VARCHAR(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL UNIQUE,
  244. url_attr VARCHAR(22) NOT NULL UNIQUE,
  245. INDEX itreval_indx (name)
  246. );
  247.  
  248. CREATE TABLE IF NOT EXISTS mailables(
  249. id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  250. service_id TINYINT UNSIGNED NOT NULL,
  251. interval_id TINYINT UNSIGNED NOT NULL,
  252. FOREIGN KEY(service_id) REFERENCES services(id) ON DELETE CASCADE ON UPDATE CASCADE,
  253. FOREIGN KEY (interval_id) REFERENCES intervals(id) ON DELETE CASCADE ON UPDATE CASCADE
  254. );
  255.  
  256. CREATE TABLE IF NOT EXISTS mail_lists(
  257. id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  258. mailable_id SMALLINT UNSIGNED NOT NULL,
  259. email_id SMALLINT UNSIGNED NOT NULL,
  260. FOREIGN KEY(email_id) REFERENCES emails(id) ON UPDATE CASCADE ON DELETE CASCADE,
  261. FOREIGN KEY (mailable_id) REFERENCES mailables(id) ON DELETE CASCADE ON UPDATE CASCADE
  262. );
  263. -- /create tables 4 emailngs
  264.  
  265. DROP TABLE intervals;
  266.  
  267. INSERT INTO mailables (service_id,mail_id,interval_id) VALUES (1,2,1);
  268.  
  269. SELECT * FROM intervals;
  270.  
  271. SELECT DISTINCT(s.name) AS sname,
  272. e.email
  273. FROM mailables AS m
  274. INNER JOIN services AS s ON m.service_id=s.id
  275. JOIN intervals AS i ON m.interval_id=i.id
  276. JOIN emails AS e ON m.mail_id=e.id
  277. WHERE s.id=1
  278. GROUP BY sname;
  279.  
  280. ALTER TABLE emails ADD is_main TINYINT(1) UNSIGNED DEFAULT 0;
  281.  
  282. SELECT s.name, e.email, i.name
  283. FROM mailables AS m
  284. LEFT JOIN services AS s ON s.id=m.service_id
  285. LEFT JOIN emails AS e ON e.id=m.mail_id
  286. LEFT JOIN intervals AS i ON i.id=m.interval_id;
  287.  
  288. SELECT service_id,interval_id FROM mailables
  289. GROUP BY service_id,interval_id ORDER BY service_id;
  290.  
  291. SELECT mail_id FROM mailables
  292. WHERE service_id = 1 AND interval_id=1;
  293.  
  294. INSERT INTO mailables(service_id,interval_id) VALUES(1,1),(1,2),(2,3);
  295. INSERT INTO mail_lists(mailable_id,email_id) VALUES(1,1),(1,2),(3,1);
  296.  
  297. SELECT * FROM tickets USE INDEX(ticket_open);
  298.  
  299. INSERT INTO sysadmin_activities (sysadmin_niks_id, ticket_id, lastreply, time_uses) VALUES(2,16,'2018-10-09 11:00:21', 103);
  300. DELETE FROM tickets WHERE id=2;
  301.  
  302. -- FK
  303. SELECT CONSTRAINT_NAME
  304. FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
  305. WHERE TABLE_NAME = 'tickets';
  306.  
  307. ALTER TABLE tickets DROP FOREIGN KEY tickets_service_id_foreign;
  308.  
  309. ALTER TABLE tickets ADD CONSTRAINT tickets_service_id_foreign
  310. FOREIGN KEY(service_id) REFERENCES services(id) ON DELETE CASCADE ON UPDATE CASCADE;
  311.  
  312. -- /FK
  313.  
  314. DELETE FROM mailables;
  315.  
  316. -- remove old mailables posibilities
  317. ALTER TABLE services ADD email VARCHAR(86) NULL;
  318. ALTER TABLE emails DROP is_main;
  319. -- /old mailable posibilities
  320.  
  321. UPDATE services SET email='[email protected]' WHERE name='adminvps';
  322.  
  323. SELECT t.id, t.ticketid, s.name, t.subject, sact.lastreply, sact.id AS sact_id, sact.time_uses, snik.admin_nik, u.name AS user_name
  324. FROM tickets AS t
  325. RIGHT JOIN sysadmin_activities AS sact ON sact.ticket_id=t.id
  326. INNER JOIN sysadmin_niks AS snik ON snik.id=sact.sysadmin_niks_id
  327. LEFT JOIN users AS u ON snik.user_id=u.id
  328. LEFT JOIN services AS s ON s.id=t.service_id
  329. ORDER BY sact.lastreply;
  330.  
  331. CREATE USER 'boss'@'localhost' IDENTIFIED BY '1111';
  332.  
  333. GRANT ALL PRIVILEGES ON crm_tickets_db.* TO "boss"@"localhost";
  334. FLUSH PRIVILEGES;
  335.  
  336. SELECT * FROM `sessions`;
  337.  
  338.  
  339.  
  340. CREATE USER 'boss2'@'localhost' IDENTIFIED WITH mysql_native_password BY '1111';
  341. GRANT ALL PRIVILEGES ON crm_db_clone.* TO 'boss2'@'localhost' WITH GRANT OPTION;
  342. CREATE USER 'boss2'@'%' IDENTIFIED WITH mysql_native_password BY '1111';
  343. GRANT ALL PRIVILEGES ON crm_db_clone.* TO 'boss2'@'%' WITH GRANT OPTION;
  344.  
  345. GRANT ALL ON `crm_tickets_db`.* TO 'boss1'@'%' ;
  346. FLUSH PRIVILEGES ;
  347.  
  348. CREATE DATABASE _db;
  349. CREATE USER 'boss1'@'localhost' IDENTIFIED WITH mysql_native_password BY '111111';
  350. GRANT ALL PRIVILEGES ON oauth_db.* TO 'er'@'localhost' WITH GRANT OPTION;
  351.  
  352. SELECT * FROM transactions
  353. WHERE DATE=STR_TO_DATE('20.10.2018','%d.%m.%Y');
  354.  
  355. SELECT * FROM `cards` WHERE `user_id` = 26 LIMIT 1;
  356.  
  357. SHOW DATABASES;
  358.  
  359. ALTER TABLE sysadmin_niks ADD INDEX (service_id);
  360. ALTER TABLE sysadmin_activities ADD INDEX (ticket_id);
  361.  
  362. SELECT COUNT(id) FROM tickets;
Advertisement
Add Comment
Please, Sign In to add comment