powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / SQL разные условия для разных столбцов + группировка
11 сообщений из 11, страница 1 из 1
SQL разные условия для разных столбцов + группировка
    #39802879
Ametist69
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Подскажите пожалуйста как прописать разные условия для разных столбцов в SQL запросе:
Пример, есть таблица:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
name	sale	product
Вася	        2	100
Петя	        3	200
Жора	5	300
Вася         4	400
Петя	        5	300
Жора	6	200
Вася	        4	200
Петя	        5	100
Жора	6	500



Как написать запрос, чтобы он выводил количество по разным условиям, и после этого группировал их по имени.
Например необходимо первым столбцом выводить сколько строк в столбце "sale" со значением 2, вторым столбцом сколько строк в столбце "sale" больше чем 2.
В результате должна получиться таблица:

Код: sql
1.
2.
3.
4.
name	sale=2	sale>2	product_Sum(sale=2)
Вася	        1	2       100
Петя	        0	3       0
Жора	0	3       0
...
Рейтинг: 0 / 0
SQL разные условия для разных столбцов + группировка
    #39802880
Ametist69
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прошу прощения, таблицы поехали, щас поправлю
...
Рейтинг: 0 / 0
SQL разные условия для разных столбцов + группировка
    #39802881
Ametist69
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
То что есть:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
name	sale	product
Вася	2	100
Петя	3	200
Жора	5	300
Вася	4	400
Петя	5	300
Жора	6	200
Вася	4	200
Петя	5	100
Жора	6	500



То что должно получиться

Код: sql
1.
2.
3.
4.
name	sale=2	sale>2	product_Sum(sale=2)
Вася	1	2	100
Петя	0	3	0
Жора	0	3	0
...
Рейтинг: 0 / 0
SQL разные условия для разных столбцов + группировка
    #39802940
Ametist69
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Решил задачу функцией:

Код: sql
1.
COUNT(CASE WHEN [условие] THEN 1 ELSE NULL END) AS Name_Count



Возможно кому-то пригодится))
...
Рейтинг: 0 / 0
SQL разные условия для разных столбцов + группировка
    #39803071
Dmi_tri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тоже заинтересовала задача, решил через джойн решить. Почему-то выдает синтаксическую ошибку. Где она?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select a.name, sale_eq_2, sale_gt_2, product_sum_sale_eq_2 from(
	select a.name, sale_eq_2, sale_gt_2 from(
		(select products.name, count(*) as sale_eq_2 from products group by name having sale=2) as a join 
		(select  products.name, count(*) as sale_gt_2 from products group by name having sale>2) as b 
        on a.name=b.name
	) as c join (
		select products.name, sum(product) as product_sum_sale_eq_2 from products group by name having sale=2) as d 
        on c.name=d.name
        );
...
Рейтинг: 0 / 0
SQL разные условия для разных столбцов + группировка
    #39803128
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ametist69Решил задачу функцией:Секция ELSE - в общем лишняя, CASE и так возвращает NULL, если ни одно из условий не проходит контроль.

Dmi_triПочему-то выдает синтаксическую ошибку. Где она?У синтаксической ошибки всегда есть сообщение об ошибке. В нём кроме всего прочего приводится фрагмент запроса, причём он начинается строго с того символа, где обнаружена ошибка. Так что всего и надо было процитировать сообщение, если сам не разобрался.
...
Рейтинг: 0 / 0
SQL разные условия для разных столбцов + группировка
    #39803301
machetero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У него в HAVING не агрегатные функции.
...
Рейтинг: 0 / 0
SQL разные условия для разных столбцов + группировка
    #39803620
Dmi_tri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'c join ( select products.name, sum(product) as product_sum_sale_eq_2 from prod' at line 6
...
Рейтинг: 0 / 0
SQL разные условия для разных столбцов + группировка
    #39803621
Dmi_tri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
machetero,

если я having на where заменю, то результат не поменяется. Та же ошибка

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select a.name, sale_eq_2, sale_gt_2, product_sum_sale_eq_2 from(
	select a.name, sale_eq_2, sale_gt_2 from(
		(select products.name, count(*) as sale_eq_2 from products where sale=2 group by name) as a join 
		(select  products.name, count(*) as sale_gt_2 from products where sale>2 group by name) as b 
        on a.name=b.name
	) as c join (
		select products.name, sum(product) as product_sum_sale_eq_2 from products where sale=2 group by name) as d 
        on c.name=d.name
        );
...
Рейтинг: 0 / 0
SQL разные условия для разных столбцов + группировка
    #39803636
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmi_tri, проблема в мультиалиасе.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select a.name, sale_eq_2, sale_gt_2, product_sum_sale_eq_2 from(
	select a.name, sale_eq_2, sale_gt_2 from(
		(select products.name, count(*) as sale_eq_2 from products group by name having sale=2) as a join 
		(select  products.name, count(*) as sale_gt_2 from products group by name having sale>2) as b 
        on a.name=b.name
	 ) as c   join (
		select products.name, sum(product) as product_sum_sale_eq_2 from products group by name having sale=2) as d 
        on  c.name  =d.name
        );

Нельзя алиасить алиас.
...
Рейтинг: 0 / 0
SQL разные условия для разных столбцов + группировка
    #39804101
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ametist69Решил задачу функцией:

Код: sql
1.
COUNT(CASE WHEN [условие] THEN 1 ELSE NULL END) AS Name_Count


Возможно кому-то пригодится))Тогда уж так:
Код: sql
1.
SUM([условие]) AS Name_Count
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / SQL разные условия для разных столбцов + группировка
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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