Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在mysql中创建循环行值_Mysql_Loops_Hive - Fatal编程技术网

如何在mysql中创建循环行值

如何在mysql中创建循环行值,mysql,loops,hive,Mysql,Loops,Hive,我有一个名为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

我有一个名为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
                                  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    
我想获取每行中的值,并将其放入此查询的设备代码中的select查询中:

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 
                                  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    
所以我没有在上面的查询中手动输入设备代码中的每一行值。 在我上面的查询中,输出如下:

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    
但我预期的结果如下:

                                  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    

我想你在找这样的东西:

                                  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    
select *, case when total_device_male > 0
               then log10(total_device_male/total_male)
          end as lmp_redmi
from (
  select device_code, sum(case when gender = 'male' then 1 else 0 end) as total_device_male,
    (select count(*) from df where gender = 'male') as total_male
  from df
  group by device_code
)x

我想你在找这样的东西:

                                  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    
select *, case when total_device_male > 0
               then log10(total_device_male/total_male)
          end as lmp_redmi
from (
  select device_code, sum(case when gender = 'male' then 1 else 0 end) as total_device_male,
    (select count(*) from df where gender = 'male') as total_male
  from df
  group by device_code
)x

您当前的查询有什么问题?您使用的是哪个版本的MySql?@TimBiegeleisen该查询没有错。我只是想把每一行的值都输入select查询,所以我没有手动输入。就像我想知道苹果Iphones5的总和一样,脚本是:选择sum(当性别=‘男性’和设备代码=‘苹果Iphones5’时,选择case,然后选择1,否则0结束)作为苹果的总和。如果我有5000种设备代码,那么有5000种选择查询。还有一种简单的方法可以解决这个问题?请添加您在上面显示的输入的预期输出。@Sergey实际上我在Hive Ambaria中使用了此查询,您当前的查询有什么问题?您使用的是哪个版本的MySql?@TimBiegeleisen此查询没有错误。我只是想把每一行的值都输入select查询,所以我没有手动输入。就像我想知道苹果Iphones5的总和一样,脚本是:选择sum(当性别=‘男性’和设备代码=‘苹果Iphones5’时,选择case,然后选择1,否则0结束)作为苹果的总和。如果我有5000种设备代码,那么有5000种选择查询。还有一种简单的方法可以解决这个问题?请添加您在上面显示的输入的预期输出。@Sergey实际上我在Hive AmbariThank youuu:中使用了此查询)输出类似于我想要的(Hank youuu:)输出类似于我想要的