Sql 分组依据与订单依据查询问题
我有活动表和样本数据,如 我需要通过在活动\u类型\u id 3的描述处创建的\u获取不同的联系人\u id订单 我试过了Sql 分组依据与订单依据查询问题,sql,postgresql,group-by,Sql,Postgresql,Group By,我有活动表和样本数据,如 我需要通过在活动\u类型\u id 3的描述处创建的\u获取不同的联系人\u id订单 我试过了 select distinct contact_id from activities where activity_type_id = 3 order by created_at desc limit 40 offset 0 然后postgres会给出类似于 错误:对于SELECT DISTINCT,ORDER BY表达式必须出现在选择列表中 第1行:…om活动,其
select distinct contact_id
from activities
where activity_type_id = 3 order by created_at desc limit 40 offset 0
然后postgres会给出类似于
错误:对于SELECT DISTINCT,ORDER BY表达式必须出现在选择列表中
第1行:…om活动,其中活动类型id=3订单由在创建时创建
我解决了这类错误并尝试了查询,但结果并不像我预期的那样
按联系人分组\u id和在desc创建的按订单分组\u未给出正确的结果
像上面一样,我尝试了分组方式、排序方式、不同的查询组合等
请推荐我
我想从上面的数据中得到如下的O/p
id | contact_id | activity_type_id | created_at
-------+------------+------------------+---------------------
718006 | 45816 | 3 | 2016-10-03 12:29:57
718005 | 45153 | 3 | 2016-10-03 12:27:01
718204 | 3491 | 3 | 2016-10-03 12:25:14
718186 | 42393 | 3 | 2016-10-03 12:23:00
718172 | 26867 | 3 | 2016-10-03 12:21:07
718171 | 45954 | 3 | 2016-10-03 12:20:09
基本上所有唯一的联系人id订单都是由desc order创建的
谢谢,您需要指定您关心的联系人id,因为您有多行
使用select distinct
时,order by
子句中只有select
中的列可用
因此,使用groupby
和orderby
如下:
select a.contact_id
from activities a
where a.activity_type_id = 3
group by a.contact_id
order by max(a.created_at) desc
limit 40 offset 0;
这个怎么样
SELECT contact_id, MAX(created_at) AS CreatedAt
FROM activities
WHERE activity_type_id = 3
GROUP BY contact_id
ORDER BY CreatedAt DESC
limit 40 offset 0
选择contact_id,min(created_at)作为从活动中创建的活动,其中活动类型=3按联系人分组\u id order by created_at desc limit 40 offset 0
按订单在此处是否起作用而不包括最大值?