【发布时间】:2019-09-10 04:50:12
【问题描述】:
我有一张名为 df 的表:
device_code gender
Xiaomi Redmi Note 5A male
samsung SM-G532G female
Apple iPhone5 female
OPPO A37f male
LENOVO Lenovo A6000 male
Apple iPhone5 male
我想在每一行中获取值并放入此查询的 device_code 中的选择查询:
select log10(total_redmi / total_male) as lmp_redmi
from (
select sum(case
when gender = 'male' and device_code = 'Xiaomi Redmi Note 5A' then 1
else 0 end) as total_redmi,
sum(case when gender = 'male' and gender is not null then 1 else 0 end) as total_male
from df) x
所以我没有在上面的查询中手动输入 device_code 中的每一行值。 在我上面的查询中,输出如下:
lmp_redmi lmp_SMG532G ... etc
-0,602059991 0
但我希望输出是这样的:
lmp
Xiaomi Redmi Note 5A -0,602059991
samsung SM-G532G 0
Apple iPhone5,3 -0,602059991
OPPO A37f -0,602059991
LENOVO Lenovo A6000 -0,602059991
【问题讨论】:
-
您当前的查询有什么问题?
-
你用的是哪个版本的MySql?
-
@TimBiegeleisen 查询没有错。我只想将每一行的值都放入选择查询中,所以我没有手动输入。就像我想知道 Apple Iphones5 的总和,那么脚本是:选择总和(当性别 = 'male' 和 device_code = 'Apple Iphones5' 然后 1 else 0 end)作为 total_apple。如果我有 5000 种 device_code,那么就有 5000 个选择查询。还有另一种简单的方法可以解决这个问题吗?
-
请添加您在上面向我们展示的输入的预期输出。
-
@Sergey 实际上我在 Hive Ambari 中使用了这个查询