gpt4 book ai didi

sql - 如何编写 SQLite 代码以显示指定代码及其来自 group_concat 函数的关联代码?

转载 作者:行者123 更新时间:2023-12-05 02:26:26 24 4
gpt4 key购买 nike

我正在尝试创建一个包含代码 N09 的表格,其中为学生分配了一组包含 N09 的代码,并且“状态完成”为是。我想使用 group_concat 来查看每个集合是否包含 N09。我看到了一个与此类似的问题,但不幸的是,它没有满足我对表 2 的目标,因为它导致了一个问题。我遇到的这个问题是它一直显示 1 而不是 2、3 用于计数。它还继续显示 N09,而不是 N09 和来自 group_concat 函数的集合中的其他代码。在 SQLite 中是否有代码可以实现我对表 2 的目标?如果我的问题不清楚,请随时发表评论,因为我是新来的。

表 2 的目标:

<表类="s-表"><头>学号状态完成状态日期状态时间代码计数Group_Concat(代码)<正文>1是2021-03-0300:00:00N091N092是2021-03-0410:03:10N092N09, M333是2021-03-0401:00:10N093N09, Y03, B55

问题:

<表类="s-表"><头>学号状态完成状态日期状态时间代码计数Group_Concat(代码)<正文>1是2021-03-0300:00:00N091N092是2021-03-0410:03:10N091N093是2021-03-0401:00:10N091N09

示例数据:

<表类="s-表"><头>学号状态完成状态日期状态时间代码<正文>1是2021-03-0300:00:00N092是2021-03-0410:03:10N092是2021-03-0410:03:10M333是2021-03-0401:00:10N093是2021-03-0401:00:10Y033是2021-03-0401:00:10B55

代码:

CREATE TABLE table2 AS
select Student_ID
,Status_Complete
,Status_Date
,Status_TIME
,Code
,count(Code) /*over (partition by Student_ID,Code)*/ as 'Count'
,GROUP_CONCAT(Code)
from table1
where Code in ('N09') AND Status_Complete = 'yes'
group by Student_ID, Status_Date, Status_TIME, 'Count'
HAVING 'Count'> 0
ORDER BY Student_ID;

最佳答案

您应该按 Student_ID 分组,因为每个学生只需要 1 行。
您想要的结果的列 Status_DateStatus_TIME 似乎是每个学生的最小值(我假设日期具有正确的格式 YYYY- mm-dd 这是 SQLite 唯一有效的日期格式)。
此外,应在 HAVING 子句中检查条件 Code = 'N09':

CREATE TABLE table2 AS
SELECT Student_ID, Status_Complete,
MIN(Status_Date) Status_Date,
TIME(MIN(Status_Date || ' ' || Status_TIME)) Status_TIME,
COUNT(*) count,
GROUP_CONCAT(Code) Codes
FROM table1
WHERE Status_Complete = 'yes'
GROUP BY Student_ID
HAVING SUM(Code = 'N09') > 0
ORDER BY Student_ID;

参见 demo .

切勿对列名使用单引号。
'Count' 在代码中使用时是字符串文字。它从不引用列别名。

关于sql - 如何编写 SQLite 代码以显示指定代码及其来自 group_concat 函数的关联代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73774505/

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