0

So, I am totally new to SQL, but the book I have from the courses I take is useless and I am trying to do a project for said course. Internet did not help me all that much (I do not know where to start exactly), so I want to ask for both links to good tutorials to check out as well as help with a very specific piece of query.

If anything I say is not clear enough, please ask me to explain! :)

Suppose two tables sale and p_sale in a database called jewel_store.

sale contains two columns: sale_CODE and sale_date

p_sale contains sale_CODE which references the above sale_ID, p_ID, p_sl_quantity and p_sl_value

sale_CODE is the primary key of sale and sale_CODE,p_ID is the primary key of p_sale

For the time being p_ID is not of much use so just ignore it for the most part.

p_sl_quantityis int and p_sl_value is double(8,2). The first one is the quantity of the product bought and the second one is the value PER UNIT of the product.

As it probably is obvious a sale_CODE can be linked to a multitude of entries in the p_sale table (example for sale_CODE 1, I have 2 entries on p_sale).

All this is based on what I was given from the task and is correctly implemented and has some example values in.

What I now have to do is find the total income from sales in a specific month. My initial approach was to start structuring everything step by step so I have come to a point that looks like the follows:

SELECT SUM(p_sl_value * p_sl_quantity) AS sales_monthly_income, p_sale.sale_CODE FROM jewel_store.p_sale GROUP BY p_sale.sale_CODE

This is probably half way through as I can get the total money a sale generated for the store. So my next step was to use this query and SELECT from it. I messed it up a couple of times already and I am scratching my head now. What I did was like this:

SELECT
    SUM(sales_monthly_income),
    sales_monthly_income,
    EXTRACT(MONTH FROM jewel_store.sale.sale_date) AS sales_month
FROM (
SELECT
    SUM(p_sl_value * p_sl_quantity) AS sales_monthly_income,
    sale_CODE
FROM jewel_store.p_sale
GROUP BY sale_CODE
) as code_income, jewel_store.sale
GROUP BY sales_month

First off, I only need to print the total_montly_income and the month columns in my final form, but I used this to clarify that everything went wrong in there. I think I need to somehow use the foreign key that references the other table, but my book is totally useless in helping me out. I would like someone to explain why this is wrong and what the right one would be and please point me to a good pdf, site or anything to learn how to do this kind of stuff. (I have checked W3SCHOOLS, it is good for the basics, but not for too advanced stuff)

Thanks in advance!

4

1 回答 1

1

从我的脑海中,这可能是它,按月分组价值总和乘以数量。

SELECT
    SUM(p.p_sl_value * p.p_sl_quantity) AS sales_monthly_income,
    month(s.sale_date)
FROM p_sale p
inner join sale s on s.sale_code = p.sale_code
GROUP BY MONTH(s.sale_date)
于 2013-06-09T09:13:09.753 回答