簡體   English   中英

分組並計數返回的SQL

[英]Group and count returned SQL

我有兩個表abbabb_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_clickabb的活動標識 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM