|
|
|
Distinct в CASE
|
|||
|---|---|---|---|
|
#18+
Вот такой вопрос, есть селект см.ниже, выбирает количество событий за год по месяцам, но нужно, чтобы выборка была не всех событий в месяце, а лишь количество дней с данным событием, т.е. если в дне было 4 события или 40 то считалось как 1 день в котором произошло данной событие. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Надо в COUNT учесть distinct day(date_srok), чтобы ответ соответствовал нижнему скрипту Код: plaintext 1. 2. Смысл вопроса в том, чтобы результат выводился в одну строку, как в первом скрипте. Заранее благодарен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2009, 15:32 |
|
||
|
Distinct в CASE
|
|||
|---|---|---|---|
|
#18+
maxATC пишет: > Надо в COUNT учесть distinct day(date_srok), чтобы ответ соответствовал > нижнему скрипту > > select count(distinct day(date_srok)) > FROM table > where event = *45* and year(date_srok) = *2006* and month(date_srok) = *1* Так так и будет SELECT count( DISTINCT case when month(date_srok) = *1* then *1* else null end), .... Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2009, 16:28 |
|
||
|
Distinct в CASE
|
|||
|---|---|---|---|
|
#18+
MasterZiv пишет, Так так и будет SELECT count( DISTINCT case when month(date_srok) = *1* then *1* else null end) Нет будет, а будет distinct по месяцу и ответ будет = 1, а нужно по day в месяце. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2009, 16:43 |
|
||
|
Distinct в CASE
|
|||
|---|---|---|---|
|
#18+
Поясню более подробно, раз такой ответ прислал MasterZiv . за 1-й месяц событий 21 1 день 7 событий 2 день 11 событий 3 день 1 событие 4 день 2 события так нужно чтобы вернуло за 1-й месяц количество дней т.е. 4 , а по первому скрипту возвращает 21, та вот как туда прилепить в COUNT этот distinct day(date_srok), чтобы вернуло 4. Возможна ли данная реализация посредством CASE? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2009, 17:10 |
|
||
|
Distinct в CASE
|
|||
|---|---|---|---|
|
#18+
select count(distinct date_srok) from table where event = 45 and year(date_srok) = 2006 group by ent, month(date_srok) в одну строку - list() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2009, 19:08 |
|
||
|
Distinct в CASE
|
|||
|---|---|---|---|
|
#18+
sPaul, спасибо, что откликнулись, но не то, я просто не правильно пояснил вопрос, в одну строку но каждое значение именовано . Т.е. одна строка на год содержащая поля по месяцам с количеством дней события. Еще раз спасибо и извиняюсь за плохую постановку вопроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2009, 20:06 |
|
||
|
Distinct в CASE
|
|||
|---|---|---|---|
|
#18+
maxATC пишет: > Нет будет, а будет distinct по месяцу и ответ будет = 1, а нужно по day > в месяце. Я вам про синтаксис говорю, а вот про семантику уж вы сами думайте. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2009, 00:19 |
|
||
|
Distinct в CASE
|
|||
|---|---|---|---|
|
#18+
maxATC пишет: > Вот такой вопрос, есть селект см.ниже, выбирает количество событий за > год по месяцам, но нужно, чтобы выборка была не всех событий в месяце, а > лишь количество дней с данным событием, т.е. если в дне было 4 события Не люблю писать запросы за других, но раз уж въехал... может вам это надо ? Код: plaintext 1. 2. 3. 4. 5. 6. 7. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2009, 00:25 |
|
||
|
Distinct в CASE
|
|||
|---|---|---|---|
|
#18+
MasterZiv пишет Я вам про синтаксис говорю, а вот про семантику уж вы сами думайте. Синтаксис знаю, спасибо за участие, просто я спросил вот почему Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Еще раз спасибо MasterZiv. Тему закрыта. Всех участников и читателей благодарю :-)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2009, 12:46 |
|
||
|
Distinct в CASE
|
|||
|---|---|---|---|
|
#18+
maxATC пишет: Я что-то запутался. Может вы лучше по-русски напишите, что у вас за таблицы и что надо получить ? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2009, 00:22 |
|
||
|
Distinct в CASE
|
|||
|---|---|---|---|
|
#18+
MasterZiv, select count( * ) FROM table where event = 45 and year(date_srok) = 2006 and month(date_srok) = 1 равен SELECT count( case when month(date_srok) = 1 then 1 else null end ), FROM table WHERE event = 45 and year(date_srok) = 2006 так вот, мне нужно не count(*), а count(поле) но в редакции count(case when month(date_srok) = 1 then 1 else null end) рабочий скрипт есть но выполняется в количестве event до 300 в десять раз дольше чем в реализации с CASE, хочется побыстрее, возможно ли в реализации с CASE. Еще раз спасибо за помощь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2009, 10:57 |
|
||
|
Distinct в CASE
|
|||
|---|---|---|---|
|
#18+
Да забыл пояснить, почему такой упертый на данную реализацию. Таблица заполнения удаленная, клиент заполняет INSERTом (SELECTом). Создатель таблицы изменить что либо не в состоянии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2009, 11:34 |
|
||
|
Distinct в CASE
|
|||
|---|---|---|---|
|
#18+
maxATC пишет: Этот запрос > select count(***) > FROM table > where event = 45 and year(date_srok) = 2006 and month(date_srok) = 1 > равен лучше этого > SELECT > count(*case when month(date_srok) = 1 then 1 else null end*), > FROM table > WHERE event = 45 and year(date_srok) = 2006 тем, что он считает записи только ЯНВАРЯ, в отличие от второго, который считает все месяцы, а "выводит" только один. Доводя эту идею до абсурда, вы могли бы писать SELECT count(case when event = 45 and year(date_srok) = 2006 and month(date_srok) = 1 then 1 else null end), FROM table но вот только зачем ? Ещё раз, лучше напишите словами, что вам надо. Словами. Иначе я помочь не смогу. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2009, 16:25 |
|
||
|
Distinct в CASE
|
|||
|---|---|---|---|
|
#18+
ну хочет человек получить значения по месяцам в 12-ти колонках, но одним запросом. -- 2 maxATC: на сколько я понял задачу, лучшая реализация - 12 подзапросов либо построить VIEW: select distinct year(date_srok), month(date_srok), day(date_srok), event from table либо если база поддерживает , можно сделать select from select ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2009, 16:57 |
|
||
|
Distinct в CASE
|
|||
|---|---|---|---|
|
#18+
MasterZiv, самый первый скрипт моей показывает, что нужно по всем месяцам, а то, что пишу про первый месяц это просто, чтобы короче, суть то не меняется, да просто вопрос в не написании скрипта как сделать, а можно ли представить один запрос в другой который содержит CASE. Dmitry пишет ну хочет человек получить значения по месяцам в 12-ти колонках, но одним запросом. Совершенно правильный подход. -- 2 maxATC: на сколько я понял задачу, лучшая реализация - 12 подзапросов именно так и сделано первоначально. Еще раз спасибо Всем. Тема закрыта . Благодарю MasterZiv,Dmitry. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2009, 18:07 |
|
||
|
|

start [/forum/topic.php?fid=55&msg=35802739&tid=2011174]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
149ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 235ms |
| total: | 477ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...