Sql 在请求中使用全局方式

Sql 在请求中使用全局方式,sql,hive,cassandra,hiveql,Sql,Hive,Cassandra,Hiveql,我的餐桌销售 ID | NAMEPRODUCT | CATEGORY | AMOUNT 1 | COMPUTER | IT | 600 2 | T-SHIRT | CLOTHING | 25 3 | Doll | TOY | 10 4 | KEYBORD | IT | 30 5 | CAP | CLOTHING | 10 3 | TOY

我的餐桌销售

  ID | NAMEPRODUCT | CATEGORY  | AMOUNT
    1 |  COMPUTER   |  IT       | 600
    2 |  T-SHIRT    |  CLOTHING |  25
    3 |  Doll       |  TOY      |  10
    4 |  KEYBORD    |  IT       |  30
    5 |  CAP        |  CLOTHING |  10
    3 |  TOY CAR    |  TOY      |  40
我想提出这类请求:

SELECT SALES1.NAMEPRODUCT, 
SALES1.CATEGORY,
SUM(SALES1.AMOUNT)/( select SUM(AMOUNT) FROM SALES AS SALES2 WHERE SALES1.CATEGORY=SALES2.CATEGORY) as ratio
from SALES AS SALES1
GROUP BY 
SALES1.NAMEPRODUCT,SALES1.CATEGORY

   NAMEPRODUCT  | CATEGORY  | ratio
     COMPUTER   |  IT       | 0,95
      T-SHIRT   |  CLOTHING | 0,71
     Doll       |  TOY      | 0,20
    KEYBORD     |  IT       | 0,5
     CAP        |  CLOTHING | 0,29
     TOY CAR    |  TOY      | 0,80 

我使用带有ApacheHive连接器的Cassandra数据库 我不能对hive和cassandra提出这种请求
有人能帮我吗

您似乎只有一张桌子。如果是,请使用窗口功能:

select nameproduct, category,
       sum(amount) as amount,
       sum(amount) * 1.0 / sum(sum(amount)) over (partition by category) as ratio
from sales1
group by nameproduct, category;

样本数据和期望结果将有所帮助。为什么您的查询不起作用?@GordonLinoff我添加示例数据要从count或sum中删除一个维度,与partition by相反的是什么?@broly21<代码>分区依据是可选的。您可以删除它以对所有数据求和。
select nameproduct, category,
       sum(amount) as amount,
       sum(amount) * 1.0 / sum(sum(amount)) over (partition by category) as ratio
from sales1
group by nameproduct, category;