我有张桌子看起来像这样:
Categories:
cId | Name | Parent
----+-------------------------+-------
1 | Parent One | NULL
2 | Child of 1st Parent | 1
3 | Parent Two | NULL
4 | Child of 1st Parent | 1
5 | Child of 2nd Parent | 2该表并不表示传家宝:每个项目要么是子项目,要么是父项,但不是两者兼而有之。
还有一张这样的桌子:
Posts:
pId | Name | cID
----+-------------------------+-------
1 | Post 1 | 1
2 | Post 2 | 2
3 | Post 3 | 2
4 | Post 4 | 3我想对它运行一个查询,返回如下内容:
cId | Count
---+---------
1 | 3
2 | 2
3 | 1
4 | 0
5 | 0计数是与该类别相关联的职位数。
所有类别都应返回。
父类别应该有类别+子类别之和的计数。(这是我有问题的事情之一)
子类别应该有类别和。
我该怎么做?
发布于 2013-02-20 16:21:28
这是一般的暗示。我不知道MySQL中是否有分析函数和分区,但是您可以将输出按类别划分,然后在类别中进行计数和汇总。对解析函数和分句进行了一些研究。一般的例子,我的意思-输出是分区的部门和排序。此外,在分区内确定的最大值-用计数、和等替换最大值。就你而言:
SELECT * FROM
(
SELECT deptno
, empno
, ename
, sal
, RANK() OVER (PARTITION BY deptno ORDER BY sal desc) rnk
, ROW_NUMBER() OVER (PARTITION BY deptno ORDER BY sal desc) rno
, MAX(hiredate) OVER (PARTITION BY deptno ORDER BY deptno) max_hire_date
FROM emp_test
ORDER BY deptno
)
--WHERE rnk = 1
ORDER BY deptno, sal desc
/
DEPTNO EMPNO ENAME SAL RNK RNO MAX_HIRE_DATE
--------------------------------------------------------------------
10 7839 KING 5000 1 1 1/23/1982
10 7782 CLARK 2450 2 2 1/23/1982
10 7934 MILLER 1300 3 3 1/23/1982
20 7788 SCOTT 3000 1 1 1/28/2013
20 7902 FORD 3000 1 2 1/28/2013
20 7566 JONES 2975 3 3 1/28/2013https://stackoverflow.com/questions/14984294
复制相似问题