产品成本 * 从产品/日期/商店维度表创建销售表时,已售出的单位无法给出正确的结果

Product Cost * Units Sold cannot give correct results, when creating Sales table from product/date/store dimension tables

提问人:resssslll 提问时间:11/16/2023 更新时间:11/16/2023 访问量:24

问:

我是mysql的新手,现在在MYSQL工作台上,我想根据产品/日期/商店表创建一个销售表。但是我在将产品成本乘以随机数时遇到了问题。

详情栏目如下:

预期销售表(日期密钥、商店密钥、产品密钥、交易 #、美元销售额、销售单位)、

尺寸表:

产品表(产品密钥、产品描述、产品部门、产品成本);

日期表(日期键、日、月、年),

store table(Store Key, Store Description)。

我试过:


CREATE TABLE sales AS
SELECT
    date.`Date Key`,
    store.`Store Key`,
    product.`Product Key`,
    ROW_NUMBER() OVER (PARTITION BY date.`Date Key`, store.`Store Key` ORDER BY product.`Product Key`) AS `Transaction #`,
    ROUND(RAND() * 10) AS `Units Sold`,
    ROUND(ROUND(RAND() * 10) * product.`Product Cost` , 2) AS `Dollar Sales`
FROM
    date 
    CROSS JOIN store
    CROSS JOIN product 

limit 3;

结果是:enter image description here

这意味着对于产品1,产品成本应为=45.6/4=11.4,对于P2=2.99/6=0.498,对于P3=7.98/10=0.798

而真实值实际上是:enter image description here

我哪里错了?

sql mysql-workbench 维度建模

评论

0赞 Akina 11/16/2023
每个 RAND() 调用都会在每个表达式和每一行中生成新值。当然,获得的数据是随机的和不一致的。
1赞 Akina 11/16/2023
使用用户定义的变量,例如:... , @tmp := ROUND(RAND() * 10) AS `Units Sold`, ROUND(@tmp * product.`Product Cost` , 2) AS `Dollar Sales` ...
0赞 jarlh 11/16/2023
一个最小的可重现示例应该包含所有相关表的示例表数据,这里没有 Jeopardy SQL。

答: 暂无答案