2016-03-28 3 views
1

Если я хочу знать, общую сумму заработной платы на каждом клиенте, то GROUP BY запроса будет выглядеть следующим образом:MySQL Группы по запросу для конкретных условий

SELECT NAME, SUM(SALARY) FROM CUSTOMERS GROUP BY NAME; 

Но, если я не хочу суммы зарплаты и просто нужно посмотреть все зарплаты, сгруппированные по имени, то что будет запросом или подходом?

+1

Может 'GROUP_CONCAT()' вместо 'SUM()' –

+1

Почему 'сгруппированы по' в отличие от 'организованы'? – Strawberry

+0

@Paul group_concat - это то, что я искал, но в запросе JPA group_concat не работает. Любая идея, что я могу сделать в запросе JPA для group_concat? –

ответ

0

Попробуйте использовать GROUP BY clause для получения желаемых результатов.

SELECT NAME,SALARY FROM CUSTOMERS GROUP BY NAME; 
1

Это зависит от того, зарплату вы хотите, чтобы показать ..

Вариант 1 -> максимальное значение:

SELECT NAME, max(SALARY) FROM CUSTOMERS GROUP BY NAME; 

Вариант 2 -> минимум:

SELECT NAME, min(SALARY) FROM CUSTOMERS GROUP BY NAME; 

Вариант 3 -> список из них:

SELECT NAME, group_concat(SALARY separator ',') FROM CUSTOMERS GROUP BY NAME; 

И последний вариант -> не имеет значения:

SELECT NAME,SALARY FROM CUSTOMERS GROUP BY NAME; 
+1

Еще один вариант: группа на сайте приложения вместо SQL. –

+0

Еще один вариант, как это сделать, я говорил обо всех возможных вариантах. @PaulSpiegel – sagi

+0

Возможно, OP просто не знает, что возможно на его языке. Например, с PHP PDO вы можете использовать что-то вроде 'fetchAll (PDO :: FETCH_COLUMN | PDO :: FETCH_GROUP)' и сохранять результат более гибким, потому что это массив. С другой стороны, также легко разобрать результирующую строку - так что все в порядке :-) –

0

Если вы хотите, чтобы получить имя и изменение заработной платы для каждого клиентов (сгруппированных по имени и зарплаты). Вы можете попробовать это.

SELECT name, salary FROM customers GROUP BY name, salary; 
Смежные вопросы