gpt4 book ai didi

MySQL 查询缺少 ID

转载 作者:行者123 更新时间:2023-11-29 00:01:37 24 4
gpt4 key购买 nike

我有三个表,我想查询一个事件中有哪些人缺席(在事件中丢失,即当某个事件的出席表中缺少 idu 时)以及有多少次他们在特定日期范围内缺席。例如,如果一个事件发生了 5 次并且用户去了其中一个,我想显示用户错过了四个事件。 我还想将一个人可以缺席的最少次数设置为 3。因此,查询将向我显示错过事件超过 3 次的用户。我的表格如下所示

用户表

idu     fname   lname
1 John Doe
2 Jane Doe
3 Mary Jane
4 John Rancho

事件表

id_event    event_name
1 Conference
2 Fellowship
3 Orientation

事件出席表

id_attendance   id_event    idu event_date
1 1 1 2012-02-01 08:00:00
2 1 2 2012-02-01 08:00:00
3 2 1 2012-06-07 08:00:00
4 2 3 2012-06-07 08:00:00
5 3 1 2013-07-12 08:00:00
6 3 2 2013-07-12 08:00:00
7 1 1 2014-05-31 08:00:00
8 1 3 2014-05-31 08:00:00
9 2 1 2015-02-08 08:00:00

我希望结果如下所示,其中第一列是 idu因此结果看起来像这样

IDU  Name      Times Absent
2 Jane Doe 3
3 Mary Jane 4

我的查询如下所示。我卡住了。

SELECT idu 
FROM users
WHERE idu NOT IN (
SELECT idu
FROM events
LEFT JOIN attendance
ON event_id=id_event
WHERE event_date>='2011-04-08 00:00:00'
AND event_date<='2019-04-08 00:00:00'
AND id_event IN(11,10) AND idu IS NOT NULL)

最佳答案

SELECT 
ut.idu as IDU,
ut.fname || ut.lname as Name,
(SELECT COUNT(*) FROM events_table) - SUM(CASE WHEN at.idu is null then 0 else 1 end) as TimesAbsent
FROM attendance_table at
RIGHT JOIN user_table ut
ON at.idu = ut.idu
GROUP BY ut.idu, ut.fname, ut.lname

关于MySQL 查询缺少 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29522590/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com