【问题标题】:to make a global means in a request使请求中的全局手段
【发布时间】:2020-05-12 23:14:59
【问题描述】:

我的桌子销售

  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

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

【问题讨论】:

  • 样本数据和期望结果会有所帮助。为什么您的查询不起作用?
  • @GordonLinoff 我添加示例数据

标签: sql hive cassandra hiveql


【解决方案1】:

您似乎只有一张桌子。如果是这样,请使用窗口函数:

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;

【讨论】:

  • partition by 的反义词是从 count 或 sum 中删除维度?
  • @broly21 。 . . partition by 是可选的。您可以将其删除以汇总所有数据。
猜你喜欢
  • 1970-01-01
  • 2019-06-21
  • 2020-06-13
  • 2016-05-25
  • 2011-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-24
相关资源
最近更新 更多