我需要使用一個查詢,以確定客戶是否已經購買使用SQL查詢100升或更獨特的飲料,到目前爲止,我已經做了:獲取真/假從SQL查詢
SELECT COUNT(DISTINCT beer_id)
FROM Orders
WHERE patron_email='[email protected]'
我如何將考驗這個結果是否是100或更多?
更新:對於模糊的問題抱歉,我需要使用標準的SQL。
我需要使用一個查詢,以確定客戶是否已經購買使用SQL查詢100升或更獨特的飲料,到目前爲止,我已經做了:獲取真/假從SQL查詢
SELECT COUNT(DISTINCT beer_id)
FROM Orders
WHERE patron_email='[email protected]'
我如何將考驗這個結果是否是100或更多?
更新:對於模糊的問題抱歉,我需要使用標準的SQL。
這工作在MySQL,不知道別人:
SELECT COUNT(DISTINCT beer_id) > 100
FROM Orders
WHERE patron_email='[email protected]'
只要把一個布爾條件的SELECT
。它將評估爲0爲假或1爲真。
這會在ms sql中給出一個語法錯誤。 – mp3ferret 2014-10-08 15:12:09
試試這個:
SELECT COUNT(beer_id)
FROM Orders
WHERE patron_email='[email protected]'
group by beer_id
having COUNT(beer_id) > 100
通過使用having
條款,如:
SELECT COUNT(DISTINCT beer_id)
FROM Orders
WHERE patron_email='[email protected]'
having count(distinct beer_id) > 100
或一個以上:
select case when (count(distinct beer_id)>100) then 1
else 0 end
from orders where patron_email='.....'
呵呵?你怎麼知道他們是一個名字字段 – logixologist 2014-10-08 15:05:28
我忘了改變後首先嚐試它的SQL - 哎呀。你對降低成本的頭腦非常敏感 - 只需花費幾秒鐘就可以改變它 – mp3ferret 2014-10-08 15:06:22
請證明任何降價 - 特別是當這個解決方案有效時( – mp3ferret 2014-10-08 15:20:09
你可以使用CASE
有一個子查詢其產生單行:
SELECT CASE WHEN (SELECT COUNT(DISTINCT beer_id)
FROM Orders
WHERE patron_email='[email protected]') > 100
THEN 'More than 100' ELSE 'Not more than 100' END As ColumnName
假定T-SQL
DECLARE @result AS INT
DECLARE @boolean AS INT
SET @result = (SELECT COUNT(DISTINCT beer_id)
FROM Orders
WHERE patron_email='[email protected]')
IF @result > 100
BEGIN
SET @boolean = 1
END
ELSE
BEGIN
SET @boolean = 0
END
的EXISTS
運營商產生一個布爾:(?如果是,什麼是RDBMS MSSQL,MySQL和甲骨文,PortreSQL)
SELECT EXISTS (
SELECT 12345
FROM orders
GROUP BY customer_id
HAVING COUNT(beer_id) > 100
) AS at_least_one_customer_ordered_100_different_beers
;
你在SQL獨自這樣做,或如PHP任何框架,等等? – 2014-10-08 15:01:41
你想要什麼?你想要獨特的飲料計數,還是真的/假的評價他們是否訂購了超過100件。 – swasheck 2014-10-08 15:09:19
請你能提供預期的產量嗎?這將有很大的幫助。謝謝 – Aramillo 2014-10-08 15:21:11