【发布时间】:2014-08-20 14:50:41
【问题描述】:
我有一个表,其中包含具有唯一 p_id 的个人的重复记录,这些个人是具有 s_id 的不同站点的成员。如何获得具有 X 个唯一 p_id 的网站数量?
所以我现在有
p_id name s_id
---- ---- ----
1 John 01
2 Alex 01
3 Ben 02
4 Mark 02
5 Colin 02
etc
我想使用 SQL 来生成这个表:
Site with 1 people: 0
Sites with 2 people: 1
Sites with 3 people: 3
我想过这样做:
select p_id, s_id, s_count from
(select p_id, s_id, count(*) as s_count from mytable group by s_id)
但我不认为这是正确的,可能有更好的方法 - 有什么想法吗?
如果有人感到困惑 - 我正在寻找 sql 语句来获取计数,而不是其他任何东西。
【问题讨论】:
-
你永远不会从这张桌子上得到
site with 1 people: 0。数据库不能像那样凭空产生结果行。 -
@MarcB - 我知道,很明显。但我想数一数。
-
实际上,SQLite 可以通过递归 CTE 生成数字。但目前尚不清楚实际需要哪个数据库……
-
@CL - 实际上是 sqlite。