условная группа по - PullRequest
0 голосов
/ 20 мая 2011

Мне нужно применить group by только для определенных данных.

для ex:

id name
1  xx
2  xx
3  xx
4  yy
5  yy
6  zz

и после применения group by к xx это должно быть похоже на

1 xx
4 yy
5 yy
6 zz

Ответы [ 3 ]

2 голосов
/ 20 мая 2011

Я бы использовал UNION

SELECT MIN(id), name
FROM MyTable
WHERE name = 'xx'
GROUP BY name

UNION

SELECT id, name
FROM MyTable
WHERE name <> 'xx'

Но без дополнительной информации это скорее всего неправильно.

Совет. Не думайте, что кто-то знает, о чем вы говорите, иногда они узнают. Но всегда старайтесь излагать как можно больше деталей. Таким образом, вы получите более проницательные ответы, и больше людей будут склонны помогать.

0 голосов
/ 22 февраля 2015

выберите отдельный идентификатор, имя из табличного порядка по идентификатору asc;

0 голосов
/ 20 мая 2011

Поскольку вам, кажется, нужно минимальное значение идентификатора для «xx», исходные значения идентификатора для «yy» и максимальное значение идентификатора для «zz» ( edit : хотя теперь я вижучто есть только одна запись для 'zz', так что это может быть MIN вместо MAX, или это может быть неагрегировано), не ясно, что мы можем действительно обобщить для вас.

SELECT MIN(ID) AS ID, Name
  FROM AnonymousTable
 WHERE Name = 'xx'
 GROUP BY Name
UNION
SELECT ID      AS ID, Name
  FROM AnonymousTable
 WHERE Name = 'yy'
UNION
SELECT MAX(ID) AS ID, Name
  FROM AnonymousTable
 WHERE Name = 'zz'
 GROUP BY Name

Это подходитданные приведены в вопросе.У вас также может быть UNION с двумя ветвями, где «yy» и «yy» обрабатываются по-разному.

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

SELECT CASE Name WHEN 'yy' THEN ID ELSE 1 END AS Pseudo_ID, Name -- , COUNT(*) AS number
  FROM AnonymousTable
 GROUP BY Pseudo_ID, Name

Обычно вы используете некоторую статистическую функцию (например, COUNT) в списке выбора, чтобы оправдать предложение GROUP BY;в противном случае вы можете использовать простой DISTINCT для устранения дубликатов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...