0
我无法弄清楚如何使用ORDER BY子句排序我的一些结果。我使用的是PostgreSQL,我有一个表记录用户在我的应用程序中执行的操作。它记录user_id,message_date,message_subject。这是我从该表中选择当前的SQL语句:SQL高级排序使用ORDER BY
SELECT
message_subject,
count (message_subject) AS message_count,
user_id,
message_date,
FROM
view_app_message
WHERE
message_date >= $P{FROM} AND message_date <= $P{TO} AND
belongs_to IN ($P{RESTAURANT_IDS})
GROUP BY
message_date,
user_id,
message_subject
ORDER BY
message_date,
user_id,
message_count DESC
这给我的结果看起来像这样:
message_subject | message_count | user_id | message_date
login | 2 | 1 | 2014.04.01
error | 1 | 1 | 2014.04.01
payment | 1 | 1 | 2014.04.01
login | 7 | 2 | 2014.04.01
error | 5 | 2 | 2014.04.01
login | 10 | 1 | 2014.04.02
error | 9 | 1 | 2014.04.02
login | 2 | 2 | 2014.04.02
payment | 1 | 2 | 2014.04.02
我要的是总的所有message_count
订购这些记录s为每个用户。例如用户1已经从2014年4月1日4个消息和用户2具有12用户2的记录应该像这样进行排序下降前的用户1的记录:
message_subject | message_count | user_id | message_date
login | 7 | 2 | 2014.04.01
error | 5 | 2 | 2014.04.01
login | 2 | 1 | 2014.04.01
error | 1 | 1 | 2014.04.01
payment | 1 | 1 | 2014.04.01
我无法弄清楚,因为我傻了。请有人帮助我吗? :d
感谢您的答复戈登。这个查询对我不起作用,而且我从DB获得以下错误:'ERROR:column“message_count”does not exist LINE 26:sum(message_count),'看来我不能使用PostgreSQL:http ://www.postgresql.org/message-id/[email protected] – 2014-09-25 07:57:47
Ooooop!好吧,我简单地使用了我的大脑,并能够正常工作。而不是'sum(message_count)'我做了'sum(count(message_subject))'而不是那个工作。如果您更新答案以获得有关如何使用别名列的小细节(或者您自己的解决方案),我会接受您的答案! – 2014-09-25 08:23:26
@DavidJacob。 。 。这将是“通过”查询的正确表述。 – 2014-09-25 11:40:17