У меня проблема с Postgres, который настаивает на том, что первичный ключ является частью предложения group by, разочарование в том, что синтаксис, который у меня есть, прекрасно работает с SQLITE.
Сообщение об ошибке - «column»Внимание, необходимо, чтобы "Внимание" было указано в предложении GROUP BY или использовалось в статистической функции.
Мой вопрос: может ли кто-нибудь предоставить исправление, такое, что Postgres выдаст вывод, который делает SQLite (оператор SQL, схема, данные? и желаемый результат представлен ниже)
Моя схема таблицы:
CREATE TABLE Attendees
(
id INTEGER PRIMARY KEY AUTOINCREMENT,
activitynumber int,
activitydate DATE,
club int,
usernum int,
username ,
activityname ,
cost int,
received int,
update_time DATETIME,
CONSTRAINT FK_activitynumber
FOREIGN KEY (activitynumber)
REFERENCES Activity(activitynumber)
CONSTRAINT FK_club
FOREIGN KEY (club)
REFERENCES "club"(clubnum)
CONSTRAINT FK_usernum
FOREIGN KEY (usernum)
REFERENCES "users"(usernum)
);
CREATE INDEX ix_attendees_group ON Attendees
(club,activitydate,activitynumber);
(Обратите внимание, я добавил индекс, чтобы попытаться решить проблему, но это не так).
activities = Attendees.query.filter_by(club=current_user.club).order_by(Attendees.activitdate.desc()).group_by(Attendees.activitydate,Attendees.activitynumber)
У меня есть следующие данные: -
id activitynumber activitydate club usernum username activityname cost received update_time
1 3 15-10-19 1002 1002000001 susan Monday Swim 200 0 58:43.8
2 3 15-10-19 1002 1002000002 triblokerich Monday Swim 200 0 58:49.9
3 4 17-10-19 1002 1002000001 susan Thursday Swim 200 0 59:04.5
4 4 17-10-19 1002 1002000015 craig Thursday Swim 200 0 59:09.9
5 6 16-10-19 1002 1002000001 susan Dunton 200 0 00:06.5
6 6 16-10-19 1002 1002000002 triblokerich Dunton 200 0 00:17.6
7 3 16-10-19 1002 1002000001 susan Monday Swim 300 0 58:28.1
8 3 16-10-19 1002 1002000002 triblokerich Monday Swim 300 0 58:33.7
9 3 16-10-19 1002 1002000015 craig Monday Swim 300 0 58:37.7
10 3 16-10-19 1002 1002000016 craig2 Monday Swim 300 0 01:41.8
11 3 19-10-19 1002 1002000001 susan Monday Swim 300 0 07:56.4
12 3 19-10-19 1002 1002000002 triblokerich Monday Swim 300 0 08:04.8
, и вывод, который я пытаюсь получить (который работает с SQLite):
Date Activity
2019-10-19 Monday Swim
2019-10-17 Thursday Swim
2019-10-16 Monday Swim
2019-10-16 Dunton
2019-10-15 Monday Swim