簡體   English   中英

在sql中將常見結果分組

[英]grouping common results in sql

我有一個產品表,其中包含產品類型,類別和成本,類型為varchar,varchar和十進制。

然后,我有一個銷售表,其中包含客戶,產品名稱,數量,成本和銷售日期,其類型為varchar,varchar,int,十進制和日期。

我想顯示一個月(例如當月)出售的所有產品。

但是,我不想單獨顯示每個銷售。 我想將所有一種產品自動添加在一起,並顯示為一行。

在銷售表中,每個銷售記錄的成本已經乘以數量。

因此,例如,如果購買了5杯啤酒,它將返回為一行,顯示名稱為啤酒,數量為5,而成本則為多少。

我需要說些什么:

Select product, cost from sales, WHERE sales.product=products.name 
AND category='food' AND WHERE month(date_field) = month(getdate())

這應該顯示當月某個類別產品的所有銷售額,但是是否有一種簡單的方法可以將產品“分組”在一起?

我將不得不考慮銷售表中的數量字段,因為一次銷售不一定只是一種產品

一個更清晰的例子是,一個銷售記錄可能是一個客戶以10的成本購買2杯啤酒,而另一個銷售記錄可能是以3的成本和15的價格出售給另一個客戶的。我只想一個記錄啤酒,共售出5瓶,總成本為25英鎊。

我不知道到哪里去...

您正在尋找類似的東西

Select product, cost from sales,products WHERE sales.product=products.name 
AND category='food' AND month(date_field) = month(getdate())

根據產品表中的類別獲取建議鏈接的項目的清單。

要按類別獲取摘要,您需要:

Select category,SUM(Sales.Quantity),SUM(Sales.cost) from 
sales,products WHERE sales.product=products.name 
AND category='food' AND month(date_field) = month(getdate()) group by category

這是可行的,但是您的數據庫結構中有很多需要批評的地方,特別是按名稱鏈接產品,因為這樣做不是很可靠。

這個問題看起來很熟悉...

答案是一個SQL GROUP BY語句。

SELECT product, SUM(quantity) FROM sales s, products p WHERE product=p.name AND category='food' AND month(date_field)=month(getdate()) GROUP BY product

上面的SUM(數量)將匯總給定月份特定產品的所有銷售單位。

使用GROUP BYCOUNT

SELECT productname, cost, COUNT(*) AS cnt
FROM sales LEFT JOIN products ON sales.product = products.productname 
WHERE category='food' AND month(date_field) = month(getdate())
GROUP BY productname

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM