t恤sql
❶ sql語句為什麼在這種case when情況下要用sum而不是count
CASEWHENprice<=1000THEN1ELSE0END
三個case語句效果相同,其實就是類似於增加一個欄位,這個欄位,滿足條件的為1,不滿足的是0,這樣sum的效果,就是將所有的1加起來,也就是所有滿足條件的記錄個數。
而count,會不管是1還是0,都會統計,這樣怎麼算都是總條目數8個。
語句這東西,靈活使用的情況太多,慢慢來吧,做到遇到一個理解一個,很快也就熟練了。
❷ sql 數據分類排序問題
select * from 查詢表 order by 衣服, 廚房用品 ,辦公用品 ,價格
這個排序是默認升序排列。如果是降序排列,用desc ,如果沒有desc就是升序排序例如:
select * from 查詢表 order by 衣服 desc , 廚房用品 ,辦公用品 ,價格
❸ SQL查詢某產品
--查詢出所有產品中白色多於黑色的產品,及其差額
with[表A](name,color,amount)as(
select'襯衫','白',100unionall
select'襯衫','黑',120unionall
select'襯衫','白',120unionall
select'褲子','白',200unionall
select'褲子','黑',360unionall
select't恤','白',400unionall
select't恤','黑',300)
select*from(
select[name],sum((casecolorwhen'白'then1else-1end)*amount)[差額]
from[表A]groupby[name]
)twhere[差額]>0
結果:
❹ 這個SQL如何寫
CREATE TABLE #OrderForm (
FormCode VARCHAR(20),
WebSourceUserName VARCHAR(20),
OrigOrder INT,
PostTime DATETIME,
OrderType INT
);
INSERT INTO #OrderForm
SELECT '211084349830', 'hao123mp', 0, '2011-08-12 14:40:25.200', 1;
CREATE TABLE #OrderDetail (
FormCode VARCHAR(20),
ProctCode VARCHAR(20),
ProctName VARCHAR(80),
SellPrice DECIMAL(8,2)
)
INSERT INTO #OrderDetail
SELECT '211084349830', '00274973', '百搭牛仔七分褲W032 牛仔藍', 99.00 UNION ALL
SELECT '211084349830', '00326416', 'TIGER七分袖襯衫 淺咖色', 119.00 UNION ALL
SELECT '211084349830', '00410788', '經典迷彩短袖T恤 迷彩色', 49.00;
CREATE TABLE #ReturnsForm (
ReturnsCode VARCHAR(20),
FormCode VARCHAR(20)
);
INSERT INTO #ReturnsForm
SELECT '0303TH11081500482', '211084349830';
CREATE TABLE #ReturnsDetail( --退貨詳情表
ReturnsCode VARCHAR(20),
ProctCode VARCHAR(20),
ProctName VARCHAR(80),
SellPrice DECIMAL(8,2)
);
INSERT INTO #ReturnsDetail
SELECT '0303TH11081500482', '00274973', '百搭牛仔七分褲W032 牛仔藍', 99.00 UNION ALL
SELECT '0303TH11081500482', '00326416', 'TIGER七分袖襯衫 淺咖色', 119.00;
go
With SaleOutCTE AS
(
SELECT
odf.WebSourceUserName,
odf.FormCode,
SUM(SellPrice) AS SumSellPrice
FROM
#OrderForm odf
JOIN #OrderDetail od
ON (odf.FormCode = od.FormCode)
WHERE
WebSourceUserName = 'hao123mp'
GROUP BY
odf.WebSourceUserName,
odf.FormCode
),
ReturnBackCTE AS
(
SELECT
rf.FormCode,
SUM(SellPrice) AS SumSellPrice
FROM
#ReturnsForm rf
JOIN #ReturnsDetail rd
ON (rf.ReturnsCode = rd.ReturnsCode)
WHERE
EXISTS (
SELECT 1
FROM #OrderForm odf
WHERE
rf.FormCode = odf.FormCode
AND odf.WebSourceUserName = 'hao123mp'
)
GROUP BY
rf.FormCode
)
SELECT
WebSourceUserName,
SUM(SaleOutCTE.SumSellPrice) AS 銷售,
SUM(ISNULL(ReturnBackCTE.SumSellPrice, 0)) AS 退貨,
SUM(SaleOutCTE.SumSellPrice)
- SUM(ISNULL(ReturnBackCTE.SumSellPrice, 0)) as 銷售額
FROM
SaleOutCTE
LEFT JOIN ReturnBackCTE
ON (SaleOutCTE.FormCode = ReturnBackCTE.FormCode)
GROUP BY
WebSourceUserName
go
WebSourceUserName 銷售 退貨 銷售額
hao123mp 267.00 218.00 49.00
(1 行受影響)
❺ postgre SQL聚合函數和除號有沖突嗎
SUM(price_a)*1.00/SUM(price_b)>1.5
這樣就行了。可能是price欄位是整型的。
❻ SQL語句 一個欄位查詢兩個條件
select
*
from
[表名]
where
[
欄位名
]
in
('褲子','鞋')
就是這個
*代表查詢所有的內容,如果你只要查詢產品型號的話就把*改成欄位名產品弄號。
❼ sql 查詢的時候 兩張表 欄位名重復了
用別名看看.
❽ sql 2005 資料庫 商品類別表查詢求助
說實在的沒有理解問題。
猜測答案:
目測類別表有點像N級目錄,t_uid對應了商品所歸屬的目錄。所以
select * from [商品詳情表] where t_uid in (3,4,5,6,....)
省略號表示你有多少包含男裝字樣的uid 都加進去
❾ 更改SQL的寫法.
oracle寫法 :
update table_name set coum = coum+1 where rownum <11;
SQL SERVER寫法:
set rowcount 10
update 表 set 要更改的欄位名='新值'
set rowcount 0
❿ 請問這個sql語句為什麼不對count不是這樣用的嗎
題主你好,
從語句上看count語句使用的沒毛病, 但從報錯上看應該是題主在建表的時候sale_price用的是字元型而非相應的數字類型. 因為在執行語句的時候要進行數字的比較, 即數值類型與數值類型的比較. 所以當sale_price的類型為varchar類型時, 你認為的是1000<=1000,但實際上是"1000"<1000, 舉個不恰當的例子就好像拿175的身高和180的體重去比是一樣的,是不能相比的.
所以題主首先要將sale_price欄位的類型轉換為數字類型,如整型int.
-----
當題主把sale_price類型轉換為數字類型後會發現,語句執行沒問題了, 但結果和預期的不一樣,解決辦法是將三個case when後面的else 0都去掉.解釋下原因:
先看下官網對於count()函數作用的描述:
=====
希望可以幫到題主, 歡迎追問.