Почему не работает группировка SQL?

Ссылка скопирована
1 ответ
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 - поле исходной таблицы или выражение из выходного набора...

  • Код сам по себе работает. Но результат выдаёт поля t1.billing_country, t1.total_invoice, c.total_customer без группировки (не работает GROUP BY t1.billing_country, t1.total_invoice, c.total_customer).
  • Ответы:

    Вероятно, не кастует год для группировки.
    Вместо:
    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%.
    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Антон С. Ответ

    Проблема с группировкой 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;

    SELECT department, COUNT(employee_id) as employee_count FROM employees GROUP BY department;

    Если после всех этих проверок проблема с группировкой SQL остается, попробуйте задать более конкретный вопрос, предоставив больше информации о вашем запросе и структуре данных.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно