Sql 如何在两张相同的表格上计数

Sql 如何在两张相同的表格上计数,sql,postgresql,count,Sql,Postgresql,Count,我试图在两个相同的表上使用count来获得某种关系 这是我的问题 SELECT b.id, count(a) count(b.id) from checkins_small a, checkins_small b WHERE a.id =22 AND a.city = b.city AND a.date = b.date GROUP BY b.id ; 这是基于签入数据,我想找到所有在同一城市和同一日期签入的用户。但是这个查询总是给我一个masive号码。counta.id和countb.

我试图在两个相同的表上使用count来获得某种关系 这是我的问题

SELECT b.id, count(a) count(b.id) from 
checkins_small a, checkins_small b 
WHERE a.id =22 AND a.city = b.city AND a.date = b.date GROUP BY b.id ;
这是基于签入数据,我想找到所有在同一城市和同一日期签入的用户。但是这个查询总是给我一个masive号码。counta.id和countb.id的结果总是相同的我如何解决这个问题

SELECT a.id, count(a.id) from checkins_small a group by a.id order by count(a.id) DESC LIMIT 10;
此查询将给出以下结果:

userid  checkin times
22     ;  1783
267    ;  1607
177    ;  1508
130    ;  1477
205    ;  1456
2      ;  1368
323    ;  1151
111    ;  1092
337    ;  940
53     ;  896
现在,我想找到所有与用户22在同一日期、同一城市登记的人,以及这些人的登记时间。所以结果是这样的

   user_id   times

你能分享一下表格的结构,一些样本数据,以及你试图得到的这个样本的结果吗?你不能选择和分组你正在计算的同一列。如果要计算b.id,则不应选择它,也不应按它分组。您想解决什么问题?如果您的id是主键,那么a.id=22的counta将始终为1。选择b.id时,按b.id分组-您的countb.id将始终为1 chekins_小表格包含签入者、签入日期、城市。您能否共享表格的结构、一些示例数据以及您尝试获取的此示例的结果?您不能按正在计数的同一列进行选择和分组。如果要计算b.id,则不应选择它,也不应按它分组。您想解决什么问题?如果您的id是主键,那么a.id=22的counta将始终为1。选择b.id时,按b.id分组-您的countb.id将始终为1 chekins_小表格包含登记人、登记日期、城市。
SELECT
   COUNT(b.ID) as CT,
   b.date
FROM
   checkins_small a
   INNER JOIN
   checkins_small b on b.city = a.city and b.date = a.date
WHERE
   a.ID = 22
GROUP BY
   b.date
SELECT b.id AS user_id,
   COUNT(b.id) AS times
FROM   (SELECT DISTINCT
           id,
           city,
           date
    FROM   checkins_small
    WHERE  id = 22) a,
   checkins_small b
WHERE  a.city = b.city
   AND a.date = b.date
   AND a.id <> b.id
GROUP  BY b.id;