如何将以下 3 个 select 语句包含在单个 mySQL 视图中

Posted

技术标签:

【中文标题】如何将以下 3 个 select 语句包含在单个 mySQL 视图中【英文标题】:How can the below 3 select statements be included in a single mySQL view 【发布时间】:2019-03-31 04:47:21 【问题描述】:

需要创建一个单独的视图来执行下面的 3 个选择语句

我可以在 SQL 编辑器中执行它们并获得比率。

select @lag := count(twitter_handles) from handle_impressions where today_impressions > yest_impressions;
select @decay := count(twitter_handles) from handle_impressions where today_impressions < yest_impressions;
select @ratio := @lag/@decay;

目的是让一个视图封装 3 个选择语句以返回滞后、衰减和比率

【问题讨论】:

你错过了today_impressions = yest_impressions 时的情况。这是故意的吗?您可能还希望采取某种措施来防止除以 0。 很好,将比较之一更改为 【参考方案1】:

我们可以尝试使用条件聚合编写单个查询:

SELECT
    COUNT(CASE WHEN today_impressions > yest_impressions THEN 1 END) AS lag_val,
    COUNT(CASE WHEN today_impressions < yest_impressions THEN 1 END) AS decay_val,
    COUNT(CASE WHEN today_impressions > yest_impressions THEN 1 END) /
        COUNT(CASE WHEN today_impressions < yest_impressions THEN 1 END) AS ratio
FROM handle_impressions;

【讨论】:

以上是关于如何将以下 3 个 select 语句包含在单个 mySQL 视图中的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 PDO 从 PHP 中的单个 select 语句将孩子分配给父母?

在 Select 语句中将 DateTime 转换为 Unix 时间戳?

SQL 组合多个 SELECT 语句

第十七章 组合查询

如何将 2 个 select 语句合并为一个?

如何在单个 SELECT 语句中拥有多个公用表表达式?