Почему не работает группировка SQL?
SELECT t1.billing_country as country, t1.total_invoice as total_invoice, c.total_customer FROM ( SELECT billing_country, EXTRACT(year from CAST(invoice_date as date)) as year, COUNT(invoice_id) as total_invoice FROM invoice WHERE EXTRACT(month from CAST(invoice_date as date)) IN (6,7,8) group by year, billing_country order by total_invoice desc ) as t1 LEFT JOIN ( SELECT country, count(customer_id) as total_customer FROM client GROUP BY country ) as c ON t1.billing_country = c.country GROUP BY t1.billing_country, t1.total_invoice, c.total_customer ORDER BY t1.total_invoice desc, t1.billing_country |
SELECT t1.billing_country as country, t1.total_invoice as total_invoice, c.total_customer FROM ( SELECT billing_country, EXTRACT(year from CAST(invoice_date as date)) as year, COUNT(invoice_id) as total_invoice FROM invoice WHERE EXTRACT(month from CAST(invoice_date as date)) IN (6,7,8) group by year, billing_country order by total_invoice desc ) as t1 LEFT JOIN ( SELECT country, count(customer_id) as total_customer FROM client GROUP BY country ) as c ON t1.billing_country = c.country GROUP BY t1.billing_country, t1.total_invoice, c.total_customer ORDER BY t1.total_invoice desc, t1.billing_country
Дополнительно:
Код надо обернуть тэгом code для корректного отображения.
group by year, billing_country
А вот поди пойми, что тут year - поле исходной таблицы или выражение из выходного набора...
Ответы:
Вероятно, не кастует год для группировки.
Вместо:
group by year ...
нужно:
group by EXTRACT(year from CAST(invoice_date as date)) ... |
group by EXTRACT(year from CAST(invoice_date as date)) ...
Если функция extract не пригодна для группировки, то сделайте еще одну обертку подзапроса, чтобы на верхнем уровне год оказался уже вычисленным полем.
- Функция. Не помню, как работает extract c group by. Но на примере оконных функций, например, row_number - они не могут быть вместе использованы.
А то, что в group by не зайдут псевдонимы колонок (то, что пишут после as) - это 100%.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Проблема с группировкой SQL может возникать по нескольким причинам. Одной из основных причин может быть неправильное использование функций агрегации в сочетании с оператором GROUP BY.
Проверьте, правильно ли вы указали все столбцы, которые необходимо сгруппировать, в операторе GROUP BY. Если вы используете функции агрегации, убедитесь, что все неагрегированные столбцы также указаны в операторе GROUP BY.
Также обратите внимание на порядок операторов в вашем запросе. Оператор GROUP BY должен идти после операторов WHERE и JOIN, но перед оператором ORDER BY.
Если вы используете подзапросы в запросе, убедитесь, что они корректно работают и возвращают ожидаемые результаты. Неправильное использование подзапросов может привести к некорректным результатам группировки.
Также стоит убедиться, что данные в вашей таблице корректны и соответствуют вашим ожиданиям. Проверьте, нет ли дублирующихся строк или некорректных значений.
Наконец, обратите внимание на ошибки в вашем коде SQL. Даже небольшая опечатка или неправильное использование кавычек могут привести к неработающему запросу.
Приведу пример корректного использования GROUP BY в SQL на языке PHP:
SELECT department, COUNT(employee_id) as employee_count FROM employees GROUP BY department;
Если после всех этих проверок проблема с группировкой SQL остается, попробуйте задать более конкретный вопрос, предоставив больше информации о вашем запросе и структуре данных.