|
|
|
Найти значение для нескольких диапазонов
|
|||
|---|---|---|---|
|
#18+
Помогите справиться с задачей: мне нужно следующий запрос select count(sum) from users left JOIN transactions t on users.id=t.user_id where DATE_FORMAT(birthday,"%Y")<"1960" AND t.status_id=2 AND t.content_type_id in(1,2,3) выполнить для нескольких диапазонов: для первого, когда birthday<"1960" уже есть в моем примере, а нужно еще посчитать count(sum) для четырех диапазонов: DATE_FORMAT(birthday,"%Y") BETWEEN "1961" AND "1970", DATE_FORMAT(birthday,"%Y") BETWEEN "1971", (birthday,"%Y") BETWEEN "1981", DATE_FORMAT(birthday,"%Y") >="2001" и всё это сделать в одном запросе, как это реализовать с помощью case ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2018, 15:36 |
|
||
|
Найти значение для нескольких диапазонов
|
|||
|---|---|---|---|
|
#18+
Замените COUNT(sum) на COUNT(CASE WHEN DATE_FORMAT(birthday,'%Y')<'1960') THEN sum END) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2018, 15:53 |
|
||
|
Найти значение для нескольких диапазонов
|
|||
|---|---|---|---|
|
#18+
Замените Код: sql 1. на Код: sql 1. и соответственно выбросите условие из WHERE. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2018, 15:54 |
|
||
|
Найти значение для нескольких диапазонов
|
|||
|---|---|---|---|
|
#18+
Спасибо,Akina Пишу так: select COUNT(CASE WHEN DATE_FORMAT(birthday,"%Y")<"1960") THEN sum END), COUNT(CASE WHEN DATE_FORMAT(birthday,"%Y") BETWEEN "1961" AND "1970" THEN sum END), COUNT(CASE WHEN DATE_FORMAT(birthday,"%Y") BETWEEN "1971" AND "1980" THEN sum END), COUNT(CASE WHEN DATE_FORMAT(birthday,"%Y") BETWEEN "1981" AND "1990" THEN sum END), COUNT(CASE WHEN DATE_FORMAT(birthday,"%Y") BETWEEN "1991" AND "2000" THEN sum END), COUNT(CASE WHEN DATE_FORMAT(birthday,"%Y") >="2001" THEN sum END) from users left JOIN transactions t on users.id=t.user_id where t.status_id=2 AND t.content_type_id in(1,2,3) выдает ошибку.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2018, 16:08 |
|
||
|
Найти значение для нескольких диапазонов
|
|||
|---|---|---|---|
|
#18+
hatter11выдает ошибку....Цитировать надо, а не констатировать... Да и кавычки у тебя какие-то не SQL-ные... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2018, 16:37 |
|
||
|
Найти значение для нескольких диапазонов
|
|||
|---|---|---|---|
|
#18+
когда я выполняю: SELECT count(case when DATE_FORMAT(birthday,"%Y") <="1960" then sum end) as "<=1960" FROM users пишет: неизвестный столбец sum ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2018, 16:38 |
|
||
|
Найти значение для нескольких диапазонов
|
|||
|---|---|---|---|
|
#18+
А в запросе, что в исходном сообщении - типа он известный? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2018, 16:40 |
|
||
|
Найти значение для нескольких диапазонов
|
|||
|---|---|---|---|
|
#18+
AkinaЦитировать надо, а не констатировать... Да и кавычки у тебя какие-то не SQL-ные... а кавычки как раз правильные в моей версии на одинарные выдается ошибка... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2018, 16:42 |
|
||
|
Найти значение для нескольких диапазонов
|
|||
|---|---|---|---|
|
#18+
AkinaА в запросе, что в исходном сообщении - типа он известный? столбец sum есть в таблице users P.S. я плохо разбираюсь в синтаксисе и у меня много ошибок в последовательности действий, но очень хочу разобраться в правилах написания запросов на практике ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2018, 16:49 |
|
||
|
Найти значение для нескольких диапазонов
|
|||
|---|---|---|---|
|
#18+
hatter11в моей версии на одинарные выдается ошибка...??? Знаете что... а присмотритесь-ка Вы повнимательнее к DBMS - точно ли это MySQL? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2018, 19:25 |
|
||
|
Найти значение для нескольких диапазонов
|
|||
|---|---|---|---|
|
#18+
Akinahatter11в моей версии на одинарные выдается ошибка...??? Знаете что... а присмотритесь-ка Вы повнимательнее к DBMS - точно ли это MySQL? dbForgeStudioExpress for MySql 8.0.4.0 Но всё-таки, приблизительно,конструкция правильная этого запроса? авторselect COUNT(CASE WHEN DATE_FORMAT(birthday,"%Y")<"1960") THEN sum END), COUNT(CASE WHEN DATE_FORMAT(birthday,"%Y") BETWEEN "1961" AND "1970" THEN sum END), COUNT(CASE WHEN DATE_FORMAT(birthday,"%Y") BETWEEN "1971" AND "1980" THEN sum END), COUNT(CASE WHEN DATE_FORMAT(birthday,"%Y") BETWEEN "1981" AND "1990" THEN sum END), COUNT(CASE WHEN DATE_FORMAT(birthday,"%Y") BETWEEN "1991" AND "2000" THEN sum END), COUNT(CASE WHEN DATE_FORMAT(birthday,"%Y") >="2001" THEN sum END) from users left JOIN transactions t on users.id=t.user_id where t.status_id=2 AND t.content_type_id in(1,2,3) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2018, 20:38 |
|
||
|
Найти значение для нескольких диапазонов
|
|||
|---|---|---|---|
|
#18+
наверное поняла ошибку, поле sum находится в таблице transactions... подскажите как подкорректировать запрос... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2018, 21:11 |
|
||
|
Найти значение для нескольких диапазонов
|
|||
|---|---|---|---|
|
#18+
Наверное, надо переписать так: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Завтра попробую запустить в программе ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2018, 21:28 |
|
||
|
Найти значение для нескольких диапазонов
|
|||
|---|---|---|---|
|
#18+
hatter11 Код: plsql 1. Это можно упростить: Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2018, 23:09 |
|
||
|
Найти значение для нескольких диапазонов
|
|||
|---|---|---|---|
|
#18+
hatter11 Код: plsql 1. ... а это исправить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2018, 05:34 |
|
||
|
Найти значение для нескольких диапазонов
|
|||
|---|---|---|---|
|
#18+
paverhatter11 Код: plsql 1. ... а это исправитьну да, спасибо, это опечатка, поскольку писала не в программе... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2018, 09:05 |
|
||
|
Найти значение для нескольких диапазонов
|
|||
|---|---|---|---|
|
#18+
теперь не соображу, каким образом в результате посчитать количество не повторяющихся user_id при выбранных условиях в таблице transactions. Пока что вывожу так: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. и потом выгружаю таблицу и считаю количество строк с ненулевым значением. Но как запрос построить чтобы он выводил это количество?? думаю, без вложенного запроса не обойтись, подскажите плиз как это сделать.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2018, 16:06 |
|
||
|
|

start [/forum/topic.php?fid=47&fpage=47&tid=1829622]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
30ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
| others: | 298ms |
| total: | 419ms |

| 0 / 0 |

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