gpt4 book ai didi

MySQL:计算具有相同值的连续行

转载 作者:行者123 更新时间:2023-11-29 01:16:42 26 4
gpt4 key购买 nike

我看过几个类似的关于计算连续行数的问题,但没有一个给我明确的答案。我希望有人能帮我解决我的问题。我以下表为例。

create table medical
(PatientID int,
Date Date,
TookTest int
);

insert into medical(PatientID, Date, TookTest)
values
(1, '2014-01-01', 1),
(1, '2014-01-05', 1),
(1, '2014-01-10', 1),
(2, '2014-01-01', 1),
(2, '2014-01-10', 0),
(2, '2014-01-20', 1),
(3, '2014-01-01', 1),
(3, '2014-01-07', 1),
(3, '2014-01-12', 1),
(3, '2014-01-21', 1),
(4, '2014-01-03', 1),
(4, '2014-01-05', 1),
(4, '2014-01-22', 0),
(4, '2014-01-27', 1)

此表用于查明哪位患者在特定日期进行了医学检查。 PatientID 和日期列是不言自明的。最后一列 TookTest 是一个二进制指示列,其中 1 表示患者参加了测试,否则为 0。 patientID 和日期在创建此表时排序。我想统计至少连续 3 次接受测试的患者人数。在我们的示例中,PatientID 1 和 3 进行了 3 次或更多次测试。所以答案是 2。谁能告诉我如何在 MySQL 中编写查询?提前感谢您的帮助!

最佳答案

SELECT 
m_id
FROM(
SELECT
m.PatientID AS m_id,
m.Date AS m_date,
m.TookTest,
IF(m.TookTest = 1 AND @b = m.PatientID, @a := @a +1, @a := 0) AS new_count,
@b := m.PatientID
FROM medical m
JOIN (
SELECT
@a := 0,
@b := 0
) AS t
) AS TEMP
WHERE new_count >= 2
GROUP BY m_id

这会为您计算。唯一的一点是它看起来有点奇怪,因为计数从 0 而不是 1 开始,所以如果它连续 3 次,计数将为 2。这就是您所要求的......看如果您有问题,请拉 fiddle http://sqlfiddle.com/#!2/22ba28/12

关于MySQL:计算具有相同值的连续行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22431809/

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