|
Разные варианты выгрузки данных
|
|||
---|---|---|---|
#18+
Здравствуйте! Есть SQL код. Даны две таблицы Shops (торговые точки) и Sales (продажи). Нужно по каждой торговой точке показать количество продаж за заданный период. Сделал в 5-и вариантах. SQL Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140.
РезультатыВариант 1 Торговая точка Количество продаж Поздняя датаТТ1 2 05.03.2020ТТ2 3 08.03.2020ТТ3 2 09.03.2020ТТ4 0 NULL Вариант 2 Торговая точка Количество продаж Поздняя датаТТ1 2 05.03.2020ТТ2 3 08.03.2020ТТ3 2 09.03.2020 Вариант 3 Торговая точка Количество продаж Поздняя датаТТ1 2 05.03.2020ТТ2 3 08.03.2020ТТ3 2 09.03.2020ТТ4 0 NULL Вариант 4 Торговая точка Количество продаж Поздняя датаТТ1 2 05.03.2020ТТ2 3 08.03.2020ТТ3 2 09.03.2020ТТ4 0 NULL Вариант 5 Торговая точка Количество продаж Поздняя датаТТ1 2 05.03.2020ТТ2 3 08.03.2020ТТ3 2 09.03.2020Вариант 1. Работает правильно. Вариант 2. Не отображает "ТТ4". Не смотря на LEFT это влияет на WHERE. Вариант 3. Это доработанный вариант 2. Работает правильно. Но этот вариант будто получился не оптимальным: два раза WHERE помещен в агрегатные функции. Вариант 4. Работает правильно. Вариант 5. Без DISTINCT дублируются ТТ и значения. А также не отображается "ТТ4". Вопрос 1. Возможно ли в третьем варианте написать оптимальнее (чтобы два раза не писать WHERE в агрегатных функциях)? Вопрос 2. Я правильно понимаю, что для варианта 4 оптимальнее уже не напишешь? Вопрос 3. Почему в 5-м варианте без DISTINCT дублируются записи и не отображается "ТТ4"? Вопрос 4. Есть вариант, написать еще по короче? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2020, 19:03 |
|
Разные варианты выгрузки данных
|
|||
---|---|---|---|
#18+
ferzmikk, непонятно, вы участвуете в соревнованиях, зачем "оптимальнее"? Чем-то результат не устраивает? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2020, 19:27 |
|
Разные варианты выгрузки данных
|
|||
---|---|---|---|
#18+
Для чего все эти издевательства над сервером? Код: sql 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2020, 19:32 |
|
Разные варианты выгрузки данных
|
|||
---|---|---|---|
#18+
Владислав Колосов ferzmikk, непонятно, вы участвуете в соревнованиях, зачем "оптимальнее"? Чем-то результат не устраивает? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2020, 19:52 |
|
Разные варианты выгрузки данных
|
|||
---|---|---|---|
#18+
invm Для чего все эти издевательства над сервером? Код: sql 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2020, 19:55 |
|
Разные варианты выгрузки данных
|
|||
---|---|---|---|
#18+
invm Для чего все эти издевательства над сервером? Код: sql 1. 2. 3. 4. 5. 6. 7.
Ну а если абсолютно ненужный join из под группировки вынести - ваще взлетит. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2020, 08:41 |
|
Разные варианты выгрузки данных
|
|||
---|---|---|---|
#18+
aleks222 Ну а если абсолютно ненужный join из под группировки вынести - ваще взлетит. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2020, 09:45 |
|
Разные варианты выгрузки данных
|
|||
---|---|---|---|
#18+
По поводу пятого варианта. Чтобы не дублировалось - надо было добавить GROUP BY. А также чтобы отображалось "ТТ4" - надо убрать WHERE и выражение, которое было в WHERE, добавить в ON. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
Но теперь возникает такая ошибка " Столбец "dbo.Sales.Sale" недопустим в списке выбора, поскольку он не содержится ни в агрегатной функции, ни в предложении GROUP BY. ". Как поле Sa.Sale не содержится в агрегатной функции, если присутствует в COUNT? И зачем Sa.Sale присутствовать в GROUP BY, если это агрегирующее поле? Как правильно написать? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2020, 14:57 |
|
|
start [/forum/topic.php?fid=46&fpage=38&tid=1685253]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
51ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
others: | 15ms |
total: | 162ms |
0 / 0 |