在请求中使用全局方法
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;
我的 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;