gpt4 book ai didi

mysql - 如何获取 channel 访问总数

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

我正在尝试为包含视频 channel 和这些 channel 订阅者详细信息的表的 MySQL 数据库设置一些查询。其中一个查询试图列出所有现有 channel 以及每个 channel 被任何订阅者访问了多少次。在这个查询中,我对哪个订阅者访问了一个 channel 不感兴趣,而只对所有 channel 的列表和每个 channel 被访问的总次数感兴趣。这可能是一个非常简单的查询,但我才刚刚开始玩数据库,所以请不要指责我。为此,我使用了两个(简而言之)创建的表:

CREATE TABLE channels (channel_id, channel_name, channel_descr);

CREATE TABLE channel_accesses (channel_id, subscriber_id, access_date, num_of_accesses);

我试图从“ channel ”表和 count()sum() 中的 num_of_accesses 中选择所有 channel ID 和名称channel_access 但我想出了一些有趣的结果,因为我实际上不知道如何将两者正确地放在一起。在表 channel_accesses 中,num_of_accesses 存储订阅者访问特定 channel 的次数。因此,我需要以某种方式计算任何订阅者访问某个 channel 的次数(抱歉,我想我在这里重复了一遍)。

最佳答案

这是您需要的一个非常简单的查询:

首先在FROM 子句中连接两个表,使用外键列(channel_id)。我们需要使用 LEFT JOIN,以便所有 channel 都出现在结果集中,即使是那些根本没有订阅者和访问权限的 channel 。:

FROM
channels AS c
LEFT JOIN
channel_accesses AS ca
ON ca.channel_id = c.channel_id

然后我们按 channels 的主键分组,因为我们想要每个 channel 的结果:

GROUP BY
c.channel_id, c.channel_name

最后,我们可以从 channels 和聚合(SUM of num_of_accesses)中SELECT我们想要的列.添加了 COALESCE() 函数,因此对于没有订阅者的 channel ,我们得到 0 而不是 null:

SELECT 
c.channel_id,
c.channel_name,
COALESCE(SUM(ca.num_of_accesses), 0) AS total_num_of_accesses
FROM
channels AS c
LEFT JOIN
channel_accesses AS ca
ON ca.channel_id = c.channel_id
GROUP BY
c.channel_id, c.channel_name ;

关于mysql - 如何获取 channel 访问总数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23616991/

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