[英]Group and count returned SQL
我有兩個表abb
和abb_click
。
abb
包含哪個對象標識處於活動狀態的信息。 abb_click
包含來自每個student_id的有關每個標識的信息 。
我“只是”想要為特定的student_id計算abb_click
的活動身份 。
下面的SELECT似乎只對活動的ident進行計數,如果該標識符位於abb_click
中,則abb_click
。
您可以在這里看到小提琴: http ://sqlfiddle.com/#!9/ b7262/1
結果應為:對於student_id 945-2有效ident s
問題:如何“調整” SELECT來計算與abb_click
表abb
的活動標識 s?
SELECT t.student_id, number_of_idents
FROM `abb_click` AS t
INNER JOIN
(SELECT ident, COUNT(ident) as number_of_idents FROM `abb` AS k
WHERE k.active = '1'
) AS t3
ON t.ident = t3.ident
WHERE t.student_id = '945'
GROUP BY t.student_id
ORDER BY number_of_idents ASC;
表abb
bid, ident, active
表abb_click
kid, ident, student_id, click
數據到表abb
1, 'ma53', 1
2, 'ma664', 1
3, 'ma779', 0
4, 'ma919', 1
數據到表abb_click
1, 'ma53', 945, 'E'
2, 'ma53', 945, 'E'
3, 'ma53', 945, 'C'
4, 'ma664', 945, 'C'
5, 'ma664', 945, 'A'
6, 'ma664', 945, 'E'
7, 'ma779', 945, 'A'
除非我錯過了理解,否則這應該可行。
SELECT abb.*, COUNT(abb_click.id) as total_abb_clicks
FROM abb
INNER JOIN abb_click ON abb_click.ident = abb.ident
WHERE abb.active = 1 && abb_click.student_id = 945
GROUP BY abb.id
-編輯:對不起,我忘記了學生條件。 所以這應該返回:
出價,身份,有效,total_abb_clicks
1,'ma53',1,3
2,'ma664',1,3
4,'ma919',1,1
我相信這應該做您想要的。
select student_id, COUNT(distinct ac.ident) as active_idents
from abb_click ac
join abb on abb.ident = ac.ident
where abb.active = 1
--and student_id = 945
group by student_id
您可以將ident和student_id的不同值分組,然后與abb
並進行計數,以返回它們的不同值:
SELECT click.student_id, COUNT(click.ident) as total_abb_clicks
FROM abb
INNER JOIN (select ident, student_id from abb_click group by ident, student_id) click ON click.ident = abb.ident
WHERE abb.active = 1 and click.student_id=945
GROUP BY click.student_id
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.