我有一张这样的表:
jobid, orderid
内部有一些数据:
jobid, orderid
1245, 6767
1235, 9058
6783, 6767
4991, 6767
9512, 9058
5123, 1234
现在我想要以下输出:
jobid, orderid, orderid(total)
1245, 6767, 3
1235, 9058, 2
6783, 6767, 3
4991, 6767, 3
9512, 9058, 2
5123, 1234, 1
现在,COUNT()不能按照我想要的方式工作,我可能需要一些小组,但我不知道如何。
提前致谢。
答案 0 :(得分:5)
看起来你正试图获得看起来像jobid, orderid, number of times that orderid appears
的行。为此,您可以使用子查询:
SELECT jobid, orderid,
(SELECT COUNT(*) FROM
MY_TABLE INR
WHERE INR.orderid = OTR.orderid) as "orderid(total)"
FROM MY_TABLE OTR
答案 1 :(得分:2)
SELECT jobid, orderid, count(orderid)
FROM sometable
GROUP BY orderid, jobid
答案 2 :(得分:2)
SELECT t.jobid
, t.orderid
, grp.orderid_total
FROM
tableX AS t
JOIN
( SELECT orderid
, COUNT(*) AS orderid_total
FROM tableX
GROUP BY orderid
) AS grp
ON grp.orderid = t.orderid
答案 3 :(得分:2)
为什么这样做?您将进行大量冗余计数,并对您的服务器施加很多不必要的压力。我会用两个查询来做到这一点:
SELECT jobid, orderid FROM my_table
获取完整列表,然后:
SELECT orderid, COUNT(*) FROM my_table GROUP BY orderid
获取每个orderid的总数。然后将这两个结果合并到您的应用程序中这将比您的解决方案快得多。
答案 4 :(得分:0)
select jobid, orderid, count(*) from table group by orderid;