在请求中使用全局方法

to make a global means in a request

我的 table 销售额

  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 

SELECT SALES1.NAMEPRODUCT, 
SALES1.CATEGORY,
SUM(SALES1.AMOUNT),
( select SUM(SALES2 .AMOUNT) FROM SALES2 WHERE SALES1.CATEGORY=SALES2.CATEGORY) AS TOTAL_AMOUNT_for_category
from SALES1
GROUP BY 
SALES1.NAMEPRODUCT,
SALES1.CATEGORY

 NAMEPRODUCT | CATEGORY  | AMOUNT |TOTAL_AMOUNT_for_category
  COMPUTER   |  IT       | 600    | 630
  T-SHIRT    |  CLOTHING |  25    |  35
  Doll       |  TOY      |  10    |  50
  KEYBORD    |  IT       |  30    | 630
  CAP        |  CLOTHING |  10    |  35
  TOY CAR    |  TOY      |  40    |  50

我将 Cassandra 数据库与 Apache Hive 连接器一起使用 我不能用 hive 和 cassandra 提出这种类型的请求 有人能帮我吗 ?

你好像只有一个table。如果是这样,请使用 window 函数:

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;