簡體   English   中英

用where子句分隔SQL

[英]Divide in SQL with a where clause

我需要划分,其中推銷員Yes和產品是Pen 超過銷售總額(在我的情況是8),並獲得總百分比。

select * from mytable   

Sale_Number      Date            Salesman_Used           Product

 1            01/01/2014             No                    Pen
 2            01/02/2014             No                    Pen
 3            01/03/2014             Yes                   Pen
 4            01/04/2014             Yes                   Pencil
 5            01/05/2014             Yes                   Pen
 6            01/06/2014             Yes                   Pencil  
 7            01/07/2014             No                    Pencil
 8            01/08/2014             No                    Pencil

我被卡在丟失的那一塊上:

select concat(100 * count(missing this piece) / count(Sale_Number), '%') 
as "Salesman Sales for Pens"
from mytable
where Salesman_Used = 'Yes' 
and Product = 'Pen'            

我嘗試的問題是where clause Sale_Number影響Sale_Number 。我該怎么做? 提前致謝。

您可以使用子查詢來獲取銷售條目的總數:

select concat(100 * count(*) / (select count(*) from mytable), '%') 
as "Salesman Sales for Pens"
from mytable
where Salesman_Used = 'Yes' 
and Product = 'Pen'  

嘗試這個:

select concat(100 * count(missing this piece) / count(select Sale_Number from mytable), '%') 
as "Salesman Sales for Pens"
from mytable
where Salesman_Used = 'Yes' 
and Product = 'Pen' 

聚合有filter子句:

如果指定了FILTER,則只有filter_clause評估為true的輸入行才被饋送到聚合函數; 其他行將被丟棄。

所以:

select concat(100 * count(*) filter (where Salesman_Used = 'Yes' and Product = 'Pen') / count(Sale_Number), '%') 
as "Salesman Sales for Pens"
from mytable

我從沒用過Postgresql,但是也許可以用:

select concat(100 * (select count(*) from mytable) / count(Sale_Number), '%') 
as "Salesman Sales for Pens"
from mytable
where Salesman_Used = 'Yes' 
and Product = 'Pen'

暫無
暫無

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

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