S**H 发帖数: 1256 | 1 用的是third party application. 所以一些standard SQL 支持的都不能用.
roll up 是没有的.怎么用一些basic sql 写.谢谢大家了.
TaskName TaskStatus TaskID
A open 1
A open 2
A Done 4
B pending 7
B done 99
expected results:
TaskName TaskStatus TaskID Total
A open 1
A open 2 2
A Done 4 1
B pending 7
B done 99 1
B pending 100 2
layout 不一定要这样. 但要一个 total , Group by TaskStatus,TaskName
还要list 出来每一个 TaskID. |
g***l 发帖数: 18555 | |
B*****g 发帖数: 34098 | 3 self-join
【在 S**H 的大作中提到】 : 用的是third party application. 所以一些standard SQL 支持的都不能用. : roll up 是没有的.怎么用一些basic sql 写.谢谢大家了. : TaskName TaskStatus TaskID : A open 1 : A open 2 : A Done 4 : B pending 7 : B done 99 : expected results: : TaskName TaskStatus TaskID Total
|
S**H 发帖数: 1256 | 4 就是数以下有几个task. by group status/task name |
g***l 发帖数: 18555 | 5 那不就是
select group status,task name, count(*)
group by group status,task name
怎个ROOLUP不能用的 |
S**H 发帖数: 1256 | 6 还要把 task ID 都列出来的.
试了一下 self join. time out了. :( |
M*********e 发帖数: 190 | 7 total只能给每个组最大的taskid么?
附图这样的结果可以么?
【在 S**H 的大作中提到】 : 还要把 task ID 都列出来的. : 试了一下 self join. time out了. :(
|
M*********e 发帖数: 190 | 8 task table is the original table.
SELECT v1.*,
v2.total
FROM task v1
LEFT OUTER JOIN
(SELECT t1.*,
t2.total
FROM task t1,
(SELECT taskname,
taskstatus,
COUNT(*) AS total
FROM task
GROUP BY taskname,
taskstatus
) t2
WHERE t1.taskname=t2.taskname
AND t1.taskstatus=t2.taskstatus
AND t1.taskid IN
(SELECT MAX(taskid) FROM task GROUP BY taskname, taskstatus
)
) v2
ON v1.taskid=v2.taskid
ORDER BY v1.taskid; |
S**H 发帖数: 1256 | |