Guest User

Untitled

a guest
Jan 17th, 2019
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.80 KB | None | 0 0
  1. id doc_id datetime user event
  2. ---|------|------------|--------|--------
  3. 1 | 10 | 04/03/2018 | john | sign
  4. 2 | 10 | 05/03/2018 | anna | sign
  5. 3 | 10 | 11/03/2018 | paul | reject
  6. 4 | 10 | 23/03/2018 | marc | sign
  7. 5 | 11 | 23/03/2018 | john | sign
  8.  
  9. user num_of_signed_docs
  10. -----|-------------------|
  11. john | 1 |
  12. anna | 0 |
  13. paul | 0 |
  14. marc | 1 |
  15.  
  16. select user, sum(case when event = 'sign' then 1 else 0 end) as num_signs
  17. from audittable
  18. group by user;
  19.  
  20. SELECT user, COUNT(event = 'sign') AS `num_of_signed_docs`
  21. FROM audittable
  22. WHERE `id` > (SELECT `id` FROM audittable
  23. WHERE `event` = 'reject'
  24. ORDER BY `id` DESC LIMIT 1)
  25. GROUP BY user;
  26.  
  27. select t.username, sum(t.type) num_of_signed_docs from (
  28. select a.username,
  29. case
  30. when event = 'reject' then 0
  31. when exists
  32. (select 1 from audit where doc_id = a.doc_id and
  33. datetime > a.datetime and event = 'reject')
  34. then 0
  35. else 1 end as type
  36. from audit a
  37. ) t
  38. group by t.username
  39.  
  40. Create Table signed
  41. (
  42. id Int,
  43. doc_id Int,
  44. dt Datetime,
  45. usr VarChar(25),
  46. event VarChar(25)
  47. )
  48. Insert Into signed Values
  49.  
  50. (1,10,'2018/03/04','john','sign'),
  51. (2,10,'2018/03/05','anna','sign'),
  52. (3,10,'2018/03/11','paul','reject'),
  53. (4,10,'2018/03/23','marc','sign'),
  54. (5,11,'2018/03/23','john','sign')
  55.  
  56. With cte1 As
  57. (
  58. Select id,usr From signed
  59. ), cte2 As
  60. (
  61. Select id as rid,usr, count(*) As numb From signed
  62. Where dt >
  63. (
  64. Select Top 1 dt From signed Where event = 'reject'
  65. )
  66. Group by id,usr
  67. )
  68.  
  69. Select min(id) As mid,cte1.usr,Max(isnull(numb,0)) As num_signed_docs
  70. From cte1 Left Join
  71. cte2 On cte1.usr = cte2.usr
  72. Group by cte1.usr
  73. Order by mid
  74.  
  75. mid usr num_signed_docs
  76. 1 john 1
  77. 2 anna 0
  78. 3 paul 0
  79. 4 marc 1
Add Comment
Please, Sign In to add comment