gpt4 book ai didi

mysql - 查询多行中大于0的总字段数

转载 作者:行者123 更新时间:2023-11-29 12:39:34 27 4
gpt4 key购买 nike

我的数据库布局是这样的。

id(primary key) | serial | channel | level1 | level2 | level3 | level4 | updated (datetime field)

对于每个连续剧,我都有 4 到 8 个 channel 。我可以通过给出此查询来查看所有这些数据

SELECT * FROM 
(SELECT channel, level1, level2, level3, level4, updated
FROM levels
WHERE serial='013-315-122'
ORDER BY channel DESC)
AS q1
GROUP BY channel
ORDER BY channel

数据每天更新多次,因此上述查询仅提供最新数据。我想要做的是能够计算 level1、level2、level3 和 level4 中序列号大于零的字段数。请记住,每个系列都有 4 到 8 个 channel ,因此我希望选择一个系列的所有 channel ,并计算每个大于零的级别字段的总数。

我知道如何对单行执行此操作,只是不确定如何对多行执行此操作以获得总计。

最佳答案

不太确定您想要的输出是什么,但也许这样的东西就是您想要的?

SELECT 
serial,
SUM(
CASE WHEN level1 > 0 THEN 1 ELSE 0 END +
CASE WHEN level2 > 0 THEN 1 ELSE 0 END +
CASE WHEN level3 > 0 THEN 1 ELSE 0 END +
CASE WHEN level4 > 0 THEN 1 ELSE 0 END
) ActiveChannelCount

FROM levels
WHERE updated = (
SELECT MAX(updated)
FROM levels l2
WHERE levels.serial = l2.serial
AND levels.channel = l2.channel
GROUP BY serial, channel
)
# AND serial='013-315-122'
GROUP BY serial
ORDER BY serial

输出如下:

serial               ActiveChannelCount
-------------------- ------------------
013-315-122 11
999-315-122 15

查看此示例 SQL Fiddle

关于mysql - 查询多行中大于0的总字段数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26309807/

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