mariadb 用于确定哪个分组行为True的SQL查询

i7uq4tfw  于 2022-11-23  发布在  其他
关注(0)|答案(1)|浏览(121)

我有以下数据库结构

datetime:datetime|id:id|result:bool|s_num:string|name:string

db示例

Datetime  |id  |result  | s_num  |name
__________________________________________
12.01.2022|2   |False   | a21    | test_1
13.01.2022|3   |False   | a22    | test_1
15.01.2022|51  |True    | a21    | test_1
16.01.2022|3   |False   | a22    | test_1
17.01.2022|3   |True    | a22    | test_1

基本上,我需要对每个s_num进行分组,然后判断其中哪个条目(按datetime排序,最早的表示在前)为True。

s_num  |name  |after_which
___________________________
a21    |test_1|2
a22    |test_1|3

因为s_num的第二行a21的值为True。我想横向,但MariaDB不支持它。我尝试用ROW_COUNT()over对行编号,但我的MariaDB版本太低。此外,我想不出任何解决方案。如果我可以使用python,我会得到所有的serial_numbers,然后对每个serial_number使用for循环,检查哪一行的值为True,但我想对Grafana使用它。对于Grafana,我考虑了10个查询,每个查询检查一个行号。

1dkrff03

1dkrff031#

虽然你的问题对我来说不是很清楚。这是否提供了你的结果?

SELECT 
  s.s_sum,
  s.name ,
  (SELECT COUNT(*)+1 FROM sample_db s1 WHERE s1.s_sum=s.s_sum AND s1.datetime<s.datetime AND s1.result=FALSE) after_which
FROM
  `sample_db` s 
  WHERE s.result=TRUE
GROUP BY s.s_sum

相关问题