Advertisement
42ama

126

Mar 2nd, 2020
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.92 KB | None | 0 0
  1. WITH passCnt(ID_psg, cnt)
  2. AS
  3. (
  4. SELECT ID_psg, COUNT(*) AS cnt
  5. FROM Pass_in_trip
  6. GROUP BY ID_psg
  7. ),
  8. maxPass(ID_psg)
  9. AS
  10. (
  11. SELECT ID_psg
  12. FROM passCnt
  13. WHERE cnt =
  14. (
  15. SELECT MAX(cnt)
  16. FROM passCnt
  17. )
  18. ),
  19. lastPass(ID_psg)
  20. AS
  21. (
  22. SELECT MAX(ID_psg)
  23. FROM Pass_in_trip
  24. ),
  25. firstPass(ID_psg)
  26. AS
  27. (
  28. SELECT MIN(ID_psg)
  29. FROM Pass_in_trip
  30. ),
  31. lagLeadPass(ID_psg)
  32. AS
  33. (
  34. SELECT ID_psg,
  35. CASE
  36. WHEN ID_psg =
  37. (
  38. SELECT *
  39. FROM firstPass(ID_psg)
  40. )
  41. THEN
  42. (
  43. SELECT *
  44. FROM lastPass(ID_psg)
  45. ) AS prev
  46. ELSE
  47. LAG(ID_psg) OVER(ORDER BY ID_psg) AS prev
  48. END,
  49. CASE
  50. WHEN ID_psg =
  51. (
  52. SELECT *
  53. FROM lastPass(ID_psg)
  54. )
  55. THEN
  56. (
  57. SELECT *
  58. FROM firstPass(ID_psg)
  59. ) AS next
  60. ELSE
  61. LEAD(ID_psg) OVER(ORDER BY ID_psg) AS next
  62. END
  63. FROM
  64. (
  65. SELECT DISTINCT ID_psg
  66. FROM Pass_in_trip
  67. ) t
  68. )
  69. SELECT *
  70. FROM lagLeadPass
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement