- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我有一个如下所示的 SQL 语句:
select supplier, case when platform in (5,6) then 'mobile'
when platform in (7,8) then 'tablet' end as platform,
count(*) as clicks
from supplier_table
group by supplier, platform;
这为我提供了每个供应商在不同平台上收到的点击次数的细目分类示例:供应商“ABC”的[("ABC",mobile, 200),("ABC", tablet, 300)]
我的目标是执行此操作并找到两次点击的总和并将其放在名为“全部”的平台中。
我尝试通过添加一个额外的大小写来使用相同的 SQL 语句来做到这一点。
select supplier, case when platform in (5,6) then 'mobile'
when platform in (7,8) then 'tablet' when platform in (5,6,7,8) then 'all'
end as platform,
count(*) as clicks
from supplier_table
group by supplier, platform;
但这不起作用,并且在没有“所有”平台的情况下给出与上面相同的结果。是否可以通过使用 Case When 语句来实现,或者我是否需要通过选择原始 SQL 结果来进行上层聚合?
谢谢。
更新:
它是 MYsql (RDBMS),是的,我需要一个值为“all”的单独行(这将包含“移动”和“平板电脑”的点击总和。
例如:[("ABC",mobile, 200),("ABC", tablet, 300), ("ABC", all, 500)]
最佳答案
如果你想要这样的结果
supplier platform clicks
abc tablet 12
abc mobile 34
将您的案例陈述添加到 GROUP BY
select supplier, case when platform in (5,6) then 'mobile'
when platform in (7,8) then 'tablet' end as platform,
count(*) as clicks
from supplier_table
group by supplier,case when platform in (5,6) then 'mobile'
when platform in (7,8) then 'tablet' end
或者,如果您想要这样的结果:
supplier tablet_clicks mobile_clicks total_clicks
abc 12 34 46
您可以将案例拆分为 1 的总和,就像这样的条件计数:
select supplier, sum(case when platform in (5,6) then 1 end) as mobile_clicks,
sum(case when platform in (7,8) then 1 end) as tablet_clicks,
count(1) total_clicks
from supplier_table
group by supplier
在看到你的更新后,如果你想要这样的结果
supplier platform clicks total_clicks
abc tablet 12 46
abc mobile 34 46
你需要像这样使用子查询
select supplier, case when platform in (5,6) then 'mobile'
when platform in (7,8) then 'tablet' end as platform,
count(*) as clicks,
(select count(1) from supplier_table as x where x.supplier=supplier_table.supplier where x.platform in (5,6,7,8)) as total_clicks
from supplier_table
group by supplier,case when platform in (5,6) then 'mobile'
when platform in (7,8) then 'tablet' end
如果你想要这样的结果
supplier platform clicks
abc tablet 12
abc mobile 34
abc all 46
你确实使用了 UNION 作为一个单独的非隔离查询怀疑
select supplier, case when platform in (5,6) then 'mobile'
when platform in (7,8) then 'tablet' end as platform,
count(*) as clicks
from supplier_table
group by supplier,case when platform in (5,6) then 'mobile'
when platform in (7,8) then 'tablet' end
UNION ALL
select supplier,'all',count(1) from supplier_table
where platform in (5,6,7,8)
group by supplier
关于mysql - 案例 When 案例之间的联合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20981318/
这个问题在这里已经有了答案: Oracle: merging two different queries into one, LIKE & IN (1 个回答) 8年前关闭。 我有以下代码: case
我查阅过此页面:http://dev.mysql.com/doc/refman/5.1/en/case.html以及这个,但无法获得一个简单的程序来工作...... 更新:为了明确我想要做什么:我想从
有什么办法可以优化下面的查询吗? SELECT DATE_FORMAT(a.duedate,'%d-%b-%y') AS dte, duedate, SUM(CASE WHEN (typeofnoti
我进退两难,以下 SQL 查询的结果是什么以及它是如何工作的: SELECT ... CASE WHEN (a.FIELD=1 AND b.FIELD=2) THEN 1 WHEN
问题:输入年,月,打印对应年月的日历。 示例: 问题分析: 1,首先1970年是Unix系统诞生的时间,1970年成为Unix的元年,1970年1月1号是星期四,现在大多的手机的日历功能只能显
**摘要:**介绍了Angular中依赖注入是如何查找依赖,如何配置提供商,如何用限定和过滤作用的装饰器拿到想要的实例,进一步通过N个案例分析如何结合依赖注入的知识点来解决开发编程中会遇到的问题。 本
我想拥有自动伴侣类apply case 类的构造函数来为我执行隐式转换,但无法弄清楚如何这样做。我到处搜索,我能找到的最接近的答案是 this问题(我将解释为什么它不是我在下面寻找的)。 我有一个看起
您好,我已经浏览了“多列案例”问题,但没有看到与此相同的内容,所以我想我应该问一下。 基本上我有两个我想要连接的表(都是子查询的结果)。它们具有相同的列名称。如果我加入他们的 ID 和 SELECT
我发现了一些类型推断的非直觉行为。因此,语义等效代码的工作方式不同,具体取决于编译器推断出的有关函数返回类型的信息。当您在最小单元测试中重现此案例时,或多或少会清楚发生了什么。但我担心在编写框架代码时
CREATE TABLE test ( sts_id int , [status1] int , [status2] int , [status3] int , [status4] int ) INS
我有以下声明: SELECT Dag AS Dag, CASE Jaar WHEN 2013 THEN Levering END AS '2013', CASE
我想做的是为所有高于平均时间、平均时间和低于平均时间的游乐设施获取平均tip_portion。所以返回3行。当我运行它时,它显示: ERROR: missing FROM-clause entry
我正在尝试设置一个包含以下字段的报告: 非常需要报告来显示日期、该日期内的总记录(因此我按日期分组),然后按小时计算 12 小时工作日(从上午 8 点到晚上 8 点)我需要计算记录在这些时间内出现的时
我有这个查询 SELECT users.name FROM users LEFT JOIN weapon_stats ON users.id = weapon_stats.zp_id WHERE we
我正在尝试按收视率等级获取不同视频的计数。我有下表: vid_id views 1 6 1 10 1 900 2 850 2 125000
假设我有一个如下所示的 SQL 语句: select supplier, case when platform in (5,6) then 'mobile' when p
我有一个表测试 TestNumber (int primary key) InactiveBitwise (int) 我执行以下命令: UPDATE tests SET CASE WH
我有一个像这样的表(name=expense): id amount date 1 -1687 2014-01-02 00:00:00.0 2 11000 2014-01-02 0
我有一个 multimap 定义 typedef std::pair au_pair; //vertices typedef std::pair acq_pair; //ch qlty specifi
我有一个有点像枚举的类,它的每个实例都有一个唯一的 int 值,该值从 0 开始并在每个新实例时递增。 class MyEnumLikeClass { static int NextId =
我是一名优秀的程序员,十分优秀!