Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / GROUP BY [column] = <value> / 5 сообщений из 5, страница 1 из 1
21.06.2017, 21:11
    #39475786
GROUP BY [column] = <value>
Всем привет,

С MySQL не работал, а вот пришлось для одного заказчика.

Есть у них запрос:

SELECT COUNT(1) AS amount, SUM(s.amount)/100 AS dollars, IF(sale_status = 4, "Sold", "On Sale") AS type
FROM sales s
WHERE s.id = 10000 AND s.timestamp > UNIX_TIMESTAMP('2017-04-21')
GROUP BY sale_status = 4

Погуглил - что-то не нашлось объяснений, что это значит.
Что означает GROUP BY [поле] = <значение поля> ?
Явно отклонение от стандарта, но в чем смысл?

Спасибо.
...
Рейтинг: 0 / 0
21.06.2017, 21:31
    #39475795
Melkij
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GROUP BY [column] = <value>
Вадим Викторович,

Вполне по стандарту. Группировка или сортировка по вычисляемому полю. Мысленно перепишите в

Код: sql
1.
2.
3.
4.
SELECT sale_status = 4 as grkey, COUNT(1) AS amount, SUM(s.amount)/100 AS dollars, IF(sale_status = 4, "Sold", "On Sale") AS type
FROM sales s
WHERE s.id = 10000 AND s.timestamp > UNIX_TIMESTAMP('2017-04-21')
GROUP BY grkey


или в
Код: sql
1.
2.
3.
4.
5.
6.
select COUNT(1) AS amount, SUM(s.amount)/100 AS dollars, IF(sale_status_4, "Sold", "On Sale") AS type
from (
select amount, sale_status = 4 as sale_status_4 from sales s
WHERE s.id = 10000 AND s.timestamp > UNIX_TIMESTAMP('2017-04-21')
) sq
group by sale_status_4
...
Рейтинг: 0 / 0
21.06.2017, 21:37
    #39475799
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GROUP BY [column] = <value>
Вадим ВикторовичЧто означает GROUP BY [поле] = <значение поля> ?Выражение [поле] = <значение поля> - это самое обычное логическое выражение. Оно может вернуть либо True, либо False. В любом не-логическом контексте (а контекст группировки именно такой) значение True преобразуется в единицу, а значение False в ноль. Иными словами, весь результирующий набор группируется по тому, истинно или ложно это условие. В данном конкретном запросе получаются две группы - в одной sale_status = 4, в другой все остальные записи.
...
Рейтинг: 0 / 0
21.06.2017, 21:41
    #39475801
GROUP BY [column] = <value>
Akina & Melkij

Просто с такой группировкой столкнулся только на MySQL.

Спасибо за ответы.
...
Рейтинг: 0 / 0
21.06.2017, 21:43
    #39475802
GROUP BY [column] = <value>
P.S. Я подозревал что-то такое, но требовалось подтверждение от гуру.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / GROUP BY [column] = <value> / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]