Advertisement
Guest User

Untitled

a guest
May 23rd, 2019
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 2.49 KB | None | 0 0
  1. ### задание 1
  2.  
  3. // Самое простое - найти того, кто больше всех косячит, топ-10 тех, кто накосячил (правильный ответ не равен его ответу) больше всех
  4. SELECT SUM(`jud` != `cjud`) `count_errors`, `login`
  5. FROM `ratings`
  6. GROUP BY `login`
  7. ORDER BY `count_errors` DESC
  8. LIMIT 10
  9.  
  10. // но можно простить косяки, если чел сделал что-то полезное, т.е., можно их оценивать по "полезности" - разности правильных и неправильных ответов
  11. SELECT SUM(`jud` != `cjud`) `count_errors`, SUM(`jud` = `cjud`) `count_ok`, (SUM(`jud` = `cjud`) - SUM(`jud` != `cjud`)) `useful`, `uid`
  12. FROM `ratings`  GROUP BY `uid` ORDER BY `useful` ASC LIMIT 10
  13.  
  14. ### Задание 2
  15. // Самое очевидное, что хочется сделать - это посчитать, сколько времени уходит на задачу в среднем, глядя на начало и конец - 33112.43381138848
  16. SELECT AVG(`time`) FROM (
  17. SELECT ((`closed_ts` - `assigned_ts`) / `microtasks`) `time` FROM `times`
  18. ) `t1`
  19.  
  20. // Поумнее будет выбрать разницу во времени между тем, как сдали предыдущую задачу и текущую задачу, время выглядит правдоподобнее - 1352.0834174937609
  21. SELECT AVG(`time`) FROM (
  22. SELECT (TIMESTAMPDIFF(SECOND, `t1`.`closed_ts`, MIN(`t2`.`closed_ts`)) / `t2`.`microtasks`) `time`
  23. FROM `times`  `t1`
  24. JOIN `times` `t2` ON (`t1`.`login` = `t2`.`login` AND `t1`.`closed_ts` < `t2`.`closed_ts`)
  25. GROUP BY `t1`.`closed_ts`, `t1`.`login`
  26. ORDER BY `t1`.`closed_ts` ASC ) `t3`
  27.  
  28. // Ещё высчитать, сколько минимально он тратит на единицу, а не в среднем, потому что минимальное время - вероятнее всего то, когда он не ходит за чаем, а нормально работал - 2.4 секунды на 1 задачу, т.е. за неё нужно заплатить N / 30 * 2.4
  29. SELECT MIN(`time`) FROM (
  30. SELECT (TIMESTAMPDIFF(SECOND, `t1`.`closed_ts`, MIN(`t2`.`closed_ts`)) / `t2`.`microtasks`) `time`
  31. FROM `times`  `t1`
  32. JOIN `times` `t2` ON (`t1`.`login` = `t2`.`login` AND `t1`.`closed_ts` < `t2`.`closed_ts`)
  33. GROUP BY `t1`.`closed_ts`, `t1`.`login`
  34. ORDER BY `t1`.`closed_ts` ASC ) `t3`
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement