powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / group by
17 сообщений из 17, страница 1 из 1
group by
    #35632418
Edu1982
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть таблица t1 и поля id, data,fam,name,sotrudnik.Делаю
Код: plaintext
1.
SELECT max(data),fam, FROM t1 GROUP BY fam
Все нормально.Но мне надо чтобы выводились остальные поля fam,name,sotrudnik.Если я пишу так
Код: plaintext
1.
SELECT max(data),fam,name,sotrudnik FROM t1 GROUP BY fam,name,sotrudnik,data
то не получается.потому-что уже надо групировать по всем полям.А я хочу только по fam
...
Рейтинг: 0 / 0
group by
    #35632459
vasos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может порю чушь но fam нужно последним указать в группировке...
...
Рейтинг: 0 / 0
group by
    #35632463
Edu1982
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не прокатывает
Mercury
...
Рейтинг: 0 / 0
group by
    #35632532
mwolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Edu1982Есть таблица t1 и поля id, data,fam,name,sotrudnik.Делаю
Код: plaintext
1.
SELECT max(data),fam, FROM t1 GROUP BY fam
Все нормально.Но мне надо чтобы выводились остальные поля fam,name,sotrudnik.Если я пишу так
Код: plaintext
1.
SELECT max(data),fam,name,sotrudnik FROM t1 GROUP BY fam,name,sotrudnik,data
то не получается.потому-что уже надо групировать по всем полям.А я хочу только по fam

Я, кажется, догадываюсь, что вы хотите получить, но уточню.
Пусть есть данные:
fam,name,sotrudnik,data
Иванов,Иван,директор,2008-11-01
Иванов,Пётр,менеджер,2008-11-02
Иванов,Василий,менеджер,2008-11-02

Что должен выдать ваш запрос на этих данных?
...
Рейтинг: 0 / 0
group by
    #35632536
Edu1982
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иванов,Василий,менеджер,2008-11-02 но сгрупировав
В Mysql-е все прокатывает а в postgresql нет
Mercury
...
Рейтинг: 0 / 0
group by
    #35632560
mwolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Edu1982Иванов,Василий,менеджер,2008-11-02 но сгрупировав
В Mysql-е все прокатывает а в postgresql нет
Mercury

В мускуле тоже не всегда прокатывает. У мускуля дивные правила умалчиваемых групировок.

А насчёт данного случая - почему именно Василий, а не Пётр?
...
Рейтинг: 0 / 0
group by
    #35632563
Edu1982
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
там будет стоять условие where.а как быть?
Mercury
...
Рейтинг: 0 / 0
group by
    #35632571
mwolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Edu1982там будет стоять условие where.а как быть?
Mercury

Ничё не понял
Где where? Какое where?
...
Рейтинг: 0 / 0
group by
    #35632577
Edu1982
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть еще id_sotrudnika where id_sotrudnika='1'
Mercury
...
Рейтинг: 0 / 0
group by
    #35633094
Edu1982
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как быть?
...
Рейтинг: 0 / 0
group by
    #35633242
Фотография ss25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробуй так
Код: plaintext
1.
SELECT max(data), (fam || '#::#' || name || '#::#' || sotrudnik) AS fam FROM t1 GROUP BY fam

А как быть?
Четко сформулируйте задачу, а то у меня есь табличка и я хочу чтоб был такой селект особо не разъясняет задачу((
...
Рейтинг: 0 / 0
group by
    #35633387
Sad Spirit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я думаю, пытаться помочь товарищу --- дохлый номер. В параллельной ветке на форуме PHPClub я так и не смог от него добиться ни внятной схемы таблицы, ни примера данных, ни желаемого результата. Видимо всё настолько секретное, что его четвертуют за разглашение.
...
Рейтинг: 0 / 0
group by
    #35633390
Edu1982
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
id- 1 
name-ivan
data- 20 . 10 . 08 
id_sot- 1 
dolg- 20 
--
id- 2 
name-ivan
data- 21 . 10 . 08 
id_sot- 1 
dolg- 21 
Надо вывести максимальную дату max(data) где where id_sotrudnika='1' групируя по name

Результат
name-ivan
data- 21 . 10 . 08 
id_sot- 1 
dolg- 21 
...
Рейтинг: 0 / 0
group by
    #35633462
Фотография ss25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
id сотрудника это у тебя первичный ключ?
...
Рейтинг: 0 / 0
group by
    #35633469
Edu1982
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
первичный ключ это -id
Mercury
...
Рейтинг: 0 / 0
group by
    #35633474
Фотография ss25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Продублирую тут Sad Spirit'a

Код: plaintext
таблицы как таковой нет просто хочу понять group by в postgre. в mysql это все получается.

Дададад, а теперь включи в мыскле sql_mode = ONLY_FULL_GROUP_BY и удивись.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
id- 1 
name-ivan
data- 20 . 10 . 08 
id_sot- 1 
dolg- 20 
--
id- 2 
name-ivan
data- 21 . 10 . 08 
id_sot- 1 
dolg- 21 

Надо вывести максимальную дату max(data) где where id_sotrudnika='1' групируя по name

Здесь данные не нормализованы, т.к. name однозначно зависит от ключа id_sot. В реальной ситуации будет скорее всего группировка по одной таблице, а потом соединение с другой таблицей.

А для представленных данных вообще никакая группировка не нужна:
Код: plaintext
1.
2.
3.
4.
select id, name, data, id_sot, dolg
from t1
where id_sot =  1 
order by data desc
limit  1 ;
...
Рейтинг: 0 / 0
group by
    #35633810
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Edu1982 пишет:
> Есть таблица t1 и поля id, data,fam,name,sotrudnik.Делаю
>
> SELECT max(data),fam, FROM t1 GROUP BY fam
>
> Все нормально.Но мне надо чтобы выводились остальные поля
> fam,name,sotrudnik.Если я пишу так
>
> SELECT max(data),fam,name,sotrudnik FROM t1 GROUP BY fam,name,sotrudnik,data
>
> то не получается.потому-что уже надо групировать по всем полям.А я хочу
> только по fam

Это невозможно. По стандарту SQL поля либо должны быть под агрегирующими
функциями, либо входить в group by.

MySQL и некоторые другие СУБД реализуют некие расширенся и позволяют
делать такое. Но при этом ЧТО выводится в тех колонках, которые не
входят в GROUP BY, вообще говоря, не известно. Поэтому собстванно
и в стандарте такое требование.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / group by
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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