I used spark-sql -e to execute below sql. Spark returns an excetpion:
ERROR CodeGenerator: failed to compile:
org.codehaus.janino.JaninoRuntimeException:
agg_doAggregateWithKeys(): Operand stack inconsistent at offset 778:
Previous size 1, now 0/* 001 */ public Object generate(Object[] references)
Following the source code of GeneratedIterator
But when I execute the same query from a thrifserver client or hive -e command, everything is fine.
Any idea of the root cause??
select
to_date(action_time) as value_date,
platform,
count(distinct( case when action_name='home' then device_num else null end)) as ea_home_uv,
count(distinct( case when action_name='search' then device_num else null end)) as ea_search_uv,
count(distinct( case when action_name='searchResult' then device_num else null end)) as ea_searchResult_uv,
count(distinct( case when action_name='addToCart' and pre_name='searchResult' and branch='search' then device_num else null end)) as ea_searchResult_addToCart_uv,
count(distinct( case when action_name='detail' and pre_name='searchResult' then device_num else null end)) as ea_search_detail_uv,
count(distinct( case when action_name='addToCart' and pre_name='detail' and branch='search' then device_num else null end)) as ea_search_detail_addToCart_uv,
count(distinct( case when action_name='topCategory' then device_num else null end)) as ea_topCategory_uv,
count(distinct( case when action_name='secCategory' then device_num else null end)) as ea_secCategory_uv,
count(distinct( case when action_name='addToCart' and pre_name='secCategory' and branch='category' then device_num else null end)) as ea_secCategory_addToCart_uv,
count(distinct( case when action_name='detail' and pre_name='secCategory' then device_num else null end)) as ea_category_detail_uv,
count(distinct( case when action_name='addToCart' and pre_name='detail' and branch='category' then device_num else null end)) as ea_category_detail_addToCart_uv,
count(distinct( case when action_name='H5Page' then device_num else null end)) as ea_H5Page_uv,
count(distinct( case when action_name='addToCart' and pre_name='H5Page' then device_num else null end)) as ea_H5Page_addToCart_uv,
count(distinct( case when action_name='detail' and pre_name='H5Page' then device_num else null end)) as ea_H5Page_detail_uv,
count(distinct( case when action_name='addToCart' and pre_name='detail' and branch='h5' then device_num else null end)) as ea_H5Page_detail_addToCart_uv,
count(distinct( case when action_name='detail' and pre_name='home' then device_num else null end)) as ea_detail_uv,
count(distinct( case when action_name='addToCart' and pre_name='detail' and branch='home' then device_num else null end)) as ea_detail_addToCart_uv,
count(distinct( case when action_name='salesList' then device_num else null end)) as ea_salesList_uv,
count(distinct( case when action_name='detail' and pre_name='salesList' then device_num else null end)) as ea_salesList_detail_uv,
count(distinct( case when action_name='addToCart' and pre_name='detail' and branch='sales' then device_num else null end)) as ea_salesList_detail_addToCart_uv,
count(distinct( case when action_name='addToCart' and pre_name='salesList' then device_num else null end)) as ea_salesList_addToCart_uv,
count(distinct( case when action_name='shoppingCart' then device_num else null end)) as ea_shoppingCart_uv,
count(distinct( case when action_name='orderConfirming' then device_num else null end)) as ea_orderConfirming_uv,
count(distinct( case when action_name='submitOrder' then device_num else null end)) as ea_submitOrder_uv,
count(distinct( case when action_name='cashier' then device_num else null end)) as ea_cashier_uv,
count(distinct( case when action_name='payment' then device_num else null end)) as ea_payment_uv,
count(distinct( case when action_name='paid' then device_num else null end)) as ea_paid_uv,
count( case when action_name='home' then 1 else null end) as ea_home_pv,
count( case when action_name='search' then 1 else null end) as ea_search_pv,
count( case when action_name='searchResult' then 1 else null end) as ea_searchResult_pv,
count( case when action_name='addToCart' and pre_name='searchResult' and branch='search' then 1 else null end) as ea_searchResult_addToCart_pv,
count( case when action_name='detail' and pre_name='searchResult' then 1 else null end) as ea_search_detail_pv,
count( case when action_name='addToCart' and pre_name='detail' and branch='search' then 1 else null end) as ea_search_detail_addToCart_pv,
count( case when action_name='topCategory' then 1 else null end) as ea_topCategory_pv,
count( case when action_name='secCategory' then 1 else null end) as ea_secCategory_pv,
count( case when action_name='addToCart' and pre_name='secCategory' and branch='category' then 1 else null end) as ea_secCategory_addToCart_pv,
count( case when action_name='detail' and pre_name='secCategory' then 1 else null end) as ea_category_detail_pv,
count( case when action_name='addToCart' and pre_name='detail' and branch='category' then 1 else null end) as ea_category_detail_addToCart_pv,
count( case when action_name='H5Page' then 1 else null end) as ea_H5Page_pv,
count( case when action_name='addToCart' and pre_name='H5Page' then 1 else null end) as ea_H5Page_addToCart_pv,
count( case when action_name='detail' and pre_name='H5Page' then 1 else null end) as ea_H5Page_detail_pv,
count( case when action_name='addToCart' and pre_name='detail' and branch='h5' then 1 else null end) as ea_H5Page_detail_addToCart_pv,
count( case when action_name='detail' and pre_name='home' then 1 else null end) as ea_detail_pv,
count( case when action_name='addToCart' and pre_name='detail' and branch='home' then 1 else null end) as ea_detail_addToCart_pv,
count( case when action_name='salesList' then 1 else null end) as ea_salesList_pv,
count( case when action_name='detail' and pre_name='salesList' then 1 else null end) as ea_salesList_detail_pv,
count( case when action_name='addToCart' and pre_name='detail' and branch='sales' then 1 else null end) as ea_salesList_detail_addToCart_pv,
count( case when action_name='addToCart' and pre_name='salesList' then 1 else null end) as ea_salesList_addToCart_pv,
count( case when action_name='shoppingCart' then 1 else null end) as ea_shoppingCart_pv,
count( case when action_name='orderConfirming' then 1 else null end ) as ea_orderConfirming_pv,
count( case when action_name='submitOrder' then 1 else null end) as ea_submitOrder_pv,
count( case when action_name='cashier' then 1 else null end) as ea_cashier_pv,
count( case when action_name='payment' then 1 else null end) as ea_payment_pv,
count( case when action_name='paid' then 1 else null end) as ea_paid_pv
from
l2_ux_t_pv
where
to_date(insert_time)>='2016-12-20'
group by
to_date(action_time),
platform
This is a bug in Janino compiler which was fixed in Spark v2.1+ accordingly to: https://issues.apache.org/jira/browse/SPARK-15467
See also:
https://github.com/janino-compiler/janino/issues/1
https://github.com/apache/spark/pull/14127
Related
I have the following script,
SELECT COUNT(*) AS Total,
SUM(CASE WHEN TypeId ='4' THEN 1 ELSE 0 END) AS 'TotalCount1',
SUM(CASE WHEN TypeId ='6' THEN 1 ELSE 0 END) AS 'TotalCount2',
SUM(CASE WHEN TypeId ='1' THEN 1 ELSE 0 END) AS 'TotalCount3',
SUM(CASE WHEN TypeId ='10' THEN 1 ELSE 0 END) AS 'TotalCount4',
SUM(CASE WHEN TypeId ='5' THEN 1 ELSE 0 END) AS 'TotalCount5',
SUM(CASE WHEN TypeId ='8' THEN 1 ELSE 0 END) AS 'TotalCount6'
FROM [Party]
Please refer the screenshot as the output of the above script.
What I want:
I want a column after the Total as the total number of the column having nonzero values.
Like in the picture the values should be 2 as TotalCount1 and Totalcount3 have non zero values.
SELECT COUNT(*) AS Total,
...
...
CASE ( WHEN SUM(CASE WHEN TypeId ='4' THEN 1 ELSE 0 END) > 0 THEN 1 ELSE 0 END) +
CASE ( WHEN SUM(CASE WHEN TypeId ='6' THEN 1 ELSE 0 END) > 0 THEN 1 ELSE 0 END) +
CASE ( WHEN SUM(CASE WHEN TypeId ='1' THEN 1 ELSE 0 END) > 0 THEN 1 ELSE 0 END) +
CASE ( WHEN SUM(CASE WHEN TypeId ='10' THEN 1 ELSE 0 END) > 0 THEN 1 ELSE 0 END) +
CASE ( WHEN SUM(CASE WHEN TypeId ='5' THEN 1 ELSE 0 END) > 0 THEN 1 ELSE 0 END) +
CASE ( WHEN SUM(CASE WHEN TypeId ='8' THEN 1 ELSE 0 END) > 0 THEN 1 ELSE 0 END)
as SumOfNonZeros
FROM [Party]
Or maybe simpler
SELECT COUNT(*) AS Total,
COUNT(CASE WHEN TypeId ='4' THEN 1 END) AS 'TotalCount1',
COUNT(CASE WHEN TypeId ='6' THEN 1 END) AS 'TotalCount2',
COUNT(CASE WHEN TypeId ='1' THEN 1 END) AS 'TotalCount3',
COUNT(CASE WHEN TypeId ='10' THEN 1 END) AS 'TotalCount4',
COUNT(CASE WHEN TypeId ='5' THEN 1 END) AS 'TotalCount5',
COUNT(CASE WHEN TypeId ='8' THEN 1 END) AS 'TotalCount6',
COUNT( DISTINCT CASE WHEN TypeId IN ('4', '6', '1', '10', '5', '8')
THEN TypeId
END ) as CountOfNonZeros
FROM [Party]
Using CASE expression over the selecting result, you can do this:
SELECT (
CASE WHEN TotalCount1 > 0 THEN 1 ELSE 0 END +
CASE WHEN TotalCount2 > 0 THEN 1 ELSE 0 END +
CASE WHEN TotalCount3 > 0 THEN 1 ELSE 0 END +
CASE WHEN TotalCount4 > 0 THEN 1 ELSE 0 END +
CASE WHEN TotalCount5 > 0 THEN 1 ELSE 0 END +
CASE WHEN TotalCount6 > 0 THEN 1 ELSE 0 END) AS Result
FROM (
SELECT COUNT(*) AS Total,
SUM(CASE WHEN TypeId ='4' THEN 1 ELSE 0 END) AS 'TotalCount1',
SUM(CASE WHEN TypeId ='6' THEN 1 ELSE 0 END) AS 'TotalCount2',
SUM(CASE WHEN TypeId ='1' THEN 1 ELSE 0 END) AS 'TotalCount3',
SUM(CASE WHEN TypeId ='10' THEN 1 ELSE 0 END) AS 'TotalCount4',
SUM(CASE WHEN TypeId ='5' THEN 1 ELSE 0 END) AS 'TotalCount5',
SUM(CASE WHEN TypeId ='8' THEN 1 ELSE 0 END) AS 'TotalCount6'
FROM [Party]
) A
SELECT A.SPLIT,
SUM(CASE WHEN answer_time IS NOT NULL AND A.ent_split IS NOT NULL AND call_type NOT LIKE 'PBX%' THEN 1 ELSE 0 END) AS CH,
SUM(CASE WHEN answer_time IS NOT NULL AND A.ent_split IS NOT NULL AND call_type NOT LIKE 'PBX%' THEN 1 ELSE 0 END) + SUM(CASE WHEN abandon_time IS NOT NULL AND answer_time IS NULL THEN 1 ELSE 0 END) AS CO,
SUM(CASE WHEN answer_time IS NOT NULL AND A.ent_split IS NOT NULL AND call_type NOT LIKE 'PBX%' THEN 1 ELSE 1 END) AS AHT
FROM reporting_call_matrix AS A WITH (NOLOCK)
WHERE A.CALENDAR_DATE >= '10/01/2015' AND A.CALENDAR_DATE <= '9/30/2016' AND A.SPLIT IN (9,26,23,43,48,33,56,70,71,72,74,50) AND ( A.ent_split IS NOT NULL)
Group BY A.SPLIT
Heres is some of the data my code puts out.
Split CH CO AHT
9 957157 1156319 1156461
You mean this?
SELECT A.SPLIT, A.CALENDAR_DATE,
SUM(CASE WHEN answer_time IS NOT NULL AND A.ent_split IS NOT NULL AND call_type NOT LIKE 'PBX%' THEN 1 ELSE 0 END) AS CH,
SUM(CASE WHEN answer_time IS NOT NULL AND A.ent_split IS NOT NULL AND call_type NOT LIKE 'PBX%' THEN 1 ELSE 0 END) + SUM(CASE WHEN abandon_time IS NOT NULL AND answer_time IS NULL THEN 1 ELSE 0 END) AS CO,
SUM(CASE WHEN answer_time IS NOT NULL AND A.ent_split IS NOT NULL AND call_type NOT LIKE 'PBX%' THEN 1 ELSE 1 END) AS AHT
FROM reporting_call_matrix AS A WITH (NOLOCK)
WHERE A.CALENDAR_DATE >= '10/01/2015' AND A.CALENDAR_DATE <= '9/30/2016' AND A.SPLIT IN (9,26,23,43,48,33,56,70,71,72,74,50) AND ( A.ent_split IS NOT NULL)
Group BY A.SPLIT, A.CALENDAR_DATE
SELECT
COUNT(CALL_KEY) AS CONTACTS,
SUM(CASE WHEN answer_time IS NOT NULL AND A.ent_split IS NOT NULL AND call_type NOT LIKE 'PBX%' THEN 1 ELSE 0 END) AS CH,
CAST((CAST(SUM(A.talk_time)
/ (CASE WHEN COUNT(A.answer_time) = 0 THEN 1 ELSE COUNT(A.answer_time) END) AS float) + CAST(SUM(A.hold_time) AS float)
/ (CASE WHEN COUNT(A.answer_time) = 0 THEN 1 ELSE COUNT(A.answer_time) END)) + CAST(SUM(A.work_time) AS float)
/ CAST(COUNT(CASE WHEN A.answer_time > 0 THEN 1 ELSE 1 END) AS numeric(8, 2)) AS Int) AS AHT,
SUM(CASE WHEN abandon_time IS NOT NULL AND answer_time IS NULL THEN 1 ELSE 0 END) AS Total_ABN,
SUM(A.answer_speed) AS ASA,
SUM(CASE WHEN answer_time IS NOT NULL AND A.ent_split IS NOT NULL AND call_type NOT LIKE 'PBX%' THEN 1 ELSE 0 END) + SUM(CASE WHEN abandon_time IS NOT NULL AND answer_time IS NULL THEN 1 ELSE 0 END) AS CO
FROM reporting_call_matrix AS A WITH (NOLOCK)
WHERE A.CALENDAR_DATE >= '5/31/2016' AND A.CALENDAR_DATE <= '7/19/2016' AND A.SPLIT IN (43) AND ( A.ent_split IS NOT NULL)
Here's My Results
CONTACTS CH AHT Total_ABN ASA CO
17199 16744 640 448 580643 17192
Assuming that the month can be obtained from the A.CALENDAR_DATE column
SELECT Month(A.CALENDAR_DATE) as Month,
COUNT(CALL_KEY) AS CONTACTS,
SUM(CASE WHEN answer_time IS NOT NULL AND A.ent_split IS NOT NULL AND call_type NOT LIKE 'PBX%' THEN 1 ELSE 0 END) AS CH,
CAST((CAST(SUM(A.talk_time)
/ (CASE WHEN COUNT(A.answer_time) = 0 THEN 1 ELSE COUNT(A.answer_time) END) AS float) + CAST(SUM(A.hold_time) AS float)
/ (CASE WHEN COUNT(A.answer_time) = 0 THEN 1 ELSE COUNT(A.answer_time) END)) + CAST(SUM(A.work_time) AS float)
/ CAST(COUNT(CASE WHEN A.answer_time > 0 THEN 1 ELSE 1 END) AS numeric(8, 2)) AS Int) AS AHT,
SUM(CASE WHEN abandon_time IS NOT NULL AND answer_time IS NULL THEN 1 ELSE 0 END) AS Total_ABN,
SUM(A.answer_speed) AS ASA,
SUM(CASE WHEN answer_time IS NOT NULL AND A.ent_split IS NOT NULL AND call_type NOT LIKE 'PBX%' THEN 1 ELSE 0 END) + SUM(CASE WHEN abandon_time IS NOT NULL AND answer_time IS NULL THEN 1 ELSE 0 END) AS CO
FROM reporting_call_matrix AS A WITH (NOLOCK)
WHERE A.CALENDAR_DATE >= '5/31/2016' AND A.CALENDAR_DATE <= '7/19/2016' AND A.SPLIT IN (43) AND ( A.ent_split IS NOT NULL)
Group by Month(A.CALENDAR_DATE)
I have two queries that I think should be doing the same thing logically, but in reality return different results. The goal is to find rows parsed out of HTTP requests that have a controller_type like one of a few conditions, and where the controller_context_id is not NULL or ''. If these conditions are met, give the row a value of one, sum all those up, and group them together. This first query was incorrectly including rows with a controller_context_id that weren't populated:
SELECT
TRUNC(request_timestamp, 'month') AS request_timestamp,
account_id,
account_guid,
cluster_id,
shard_id,
unique_id,
context_id,
controller_type,
controller_context_id,
concat_user_id,
user_id,
COUNT(account_id) AS num_page_views,
SUM(CASE
WHEN controller_type LIKE 'pages%' AND
controller_context_id <> '' AND
controller_context_id IS NOT NULL
THEN 1
ELSE 0 END) AS num_page_views_pages,
SUM(CASE
WHEN controller_type LIKE 'files%' AND
controller_context_id <> '' AND
controller_context_id IS NOT NULL
THEN 1
ELSE 0 END) AS num_page_views_files,
SUM(CASE
WHEN controller_type LIKE 'modules%' AND
controller_context_id <> '' AND
controller_context_id IS NOT NULL
THEN 1
ELSE 0 END) AS num_page_views_modules,
SUM(CASE
WHEN controller_type LIKE 'assignments%' AND
controller_context_id <> '' AND
controller_context_id IS NOT NULL
THEN 1
ELSE 0 END) AS num_page_views_assignments,
SUM(CASE
WHEN controller_type LIKE 'quizzes%' AND
controller_context_id <> '' AND
controller_context_id IS NOT NULL
THEN 1
ELSE 0 END) AS num_page_views_quizzes,
SUM(CASE
WHEN controller_type LIKE 'discussion_topics%' AND
controller_context_id <> '' AND
controller_context_id IS NOT NULL
THEN 1
ELSE 0 END) AS num_page_views_discussion_topics,
SUM(CASE
WHEN controller_type LIKE 'outcome%' AND
controller_context_id <> '' AND
controller_context_id IS NOT NULL
THEN 1
ELSE 0 END) AS num_page_views_outcomes,
COUNT(DISTINCT session_id) AS num_sessions
FROM requests
GROUP BY
TRUNC(request_timestamp, 'month'),
account_id,
account_guid,
cluster_id,
shard_id,
unique_id,
context_id,
context_id,
controller_type,
controller_context_id,
concat_user_id,
user_id
Where this second query does the correct thing:
SELECT
TRUNC(request_timestamp, 'month') AS request_timestamp,
account_id,
account_guid,
cluster_id,
shard_id,
unique_id,
context_id,
controller_type,
controller_context_id,
concat_user_id,
user_id,
COUNT(account_id) AS num_page_views,
COUNT(DISTINCT session_id) AS num_sessions,
SUM(CASE
WHEN controller_type LIKE 'pages%' AND
(CASE
WHEN controller_context_id = '' OR
controller_context_id IS NULL THEN 0 ELSE 1 END)
= 1
THEN 1
ELSE 0 END) AS num_page_views_pages,
SUM(CASE
WHEN controller_type LIKE 'files%' AND
(CASE
WHEN controller_context_id = '' OR
controller_context_id IS NULL THEN 0 ELSE 1 END)
= 1
THEN 1
ELSE 0 END) AS num_page_views_files,
SUM(CASE
WHEN controller_type LIKE 'modules%' AND
(CASE
WHEN controller_context_id = '' OR
controller_context_id IS NULL THEN 0 ELSE 1 END)
= 1
THEN 1
ELSE 0 END) AS num_page_views_modules,
SUM(CASE
WHEN controller_type LIKE 'assignments%' AND
(CASE
WHEN controller_context_id = '' OR
controller_context_id IS NULL THEN 0 ELSE 1 END)
= 1
THEN 1
ELSE 0 END) AS num_page_views_assignments,
SUM(CASE
WHEN controller_type LIKE 'quizzes%' AND
(CASE
WHEN controller_context_id = '' OR
controller_context_id IS NULL THEN 0 ELSE 1 END)
= 1
THEN 1
ELSE 0 END) AS num_page_views_quizzes,
SUM(CASE
WHEN controller_type LIKE 'discussion_topics%' AND
(CASE
WHEN controller_context_id = '' OR
controller_context_id IS NULL THEN 0 ELSE 1 END)
= 1
THEN 1
ELSE 0 END) AS num_page_views_discussion_topics,
SUM(CASE
WHEN controller_type LIKE 'outcomes%' AND
(CASE
WHEN controller_context_id = '' OR
controller_context_id IS NULL THEN 0 ELSE 1 END)
= 1
THEN 1
ELSE 0 END) AS num_page_views_outcomes
FROM requests
GROUP BY
TRUNC(request_timestamp, 'month'),
account_id,
account_guid,
cluster_id,
shard_id,
unique_id,
context_id,
controller_type,
controller_context_id,
concat_user_id,
user_id
As far as I can tell they should be doing the same thing, the second query just uses a nested CASE statement to check for the NULL or '' value. I'm having trouble understanding the difference, if any, in logic between the two.
Any reason why i'm getting a missing expression error?
select
CASE WHEN
(
SELECT COUNT(*) AS COUNT
FROM TRANSPLANT_ORGANS
INNER JOIN ORGAN_TYPE ON TRANSPLANT_ORGANS.TX_ORG_ID = ORGAN_TYPE.ORG_RECORD_ID
WHERE COUNT > 0
)
THEN
(
SELECT SUBSTR(CONCAT(CASE SUM(CASE WHEN ORGAN_TYPE.ORG_ID BETWEEN 660 AND 662 THEN 1 ELSE 0 END) WHEN 0 THEN '' ELSE '/KIDNEY' END,
CONCAT(CASE SUM(CASE WHEN ORGAN_TYPE.ORG_ID BETWEEN 640 AND 650 THEN 1 ELSE 0 END) WHEN 0 THEN '' ELSE '/LIVER' END,
CONCAT(CASE SUM(CASE WHEN ORGAN_TYPE.ORG_ID IN (620,622) THEN 1 ELSE 0 END) WHEN 0 THEN '' ELSE '/PANCREAS' END,
CONCAT(CASE SUM(CASE WHEN ORGAN_TYPE.ORG_ID IN (621) THEN 1 ELSE 0 END) WHEN 0 THEN '' ELSE '/PANCREAS ISLETS' END,
CONCAT(CASE SUM(CASE WHEN ORGAN_TYPE.ORG_ID IN (700) THEN 1 ELSE 0 END) WHEN 0 THEN '' ELSE '/HEART' END,
CONCAT(CASE SUM(CASE WHEN ORGAN_TYPE.ORG_ID IN (600) THEN 1 ELSE 0 END) WHEN 0 THEN '' ELSE '/LUNGS' END,
CONCAT(CASE SUM(CASE WHEN ORGAN_TYPE.ORG_ID BETWEEN 601 AND 607 THEN 1 ELSE 0 END) WHEN 2 THEN '/LUNGS' WHEN 0 THEN '' ELSE '/LUNG' END,
CONCAT(CASE SUM(CASE WHEN ORGAN_TYPE.ORG_ID IN (680) THEN 1 ELSE 0 END) WHEN 0 THEN '' ELSE '/INTESTINES' END,
CONCAT(CASE SUM(CASE WHEN ORGAN_TYPE.ORG_ID BETWEEN 685 AND 686 THEN 1 ELSE 0 END) WHEN 0 THEN '' ELSE 'SMALL INTESTINE' END,
CONCAT(CASE SUM(CASE WHEN ORGAN_TYPE.ORG_ID BETWEEN 683 AND 684 THEN 1 ELSE 0 END) WHEN 0 THEN '' ELSE 'LARGE INTESTINES' END,
CONCAT(CASE SUM(CASE WHEN ORGAN_TYPE.ORG_ID IN (681) THEN 1 ELSE 0 END) WHEN 0 THEN '' ELSE '/DUODENUM' END,
CASE SUM(CASE WHEN ORGAN_TYPE.ORG_ID IN (682) THEN 1 ELSE 0 END) WHEN 0 THEN '' ELSE '/STOMACH' END))))))))))),2,255)
FROM TRANSPLANT_ORGANS
INNER JOIN ORGAN_TYPE ON TRANSPLANT_ORGANS.TX_ORG_ID = ORGAN_TYPE.ORG_RECORD_ID
)
END
First off, you are retrieving a COUNT from transplant_organs, but then never doing a comparison. WHERE COUNT > 0 can be removed and then with the ending parenthesis you can put ) > 0.
Second, your outer select doesn't have a FROM clause. At the very least use FROM dual.
Example:
SELECT CASE
WHEN (SELECT 1 FROM dual) > 0
THEN (SELECT 'Something' FROM dual)
END
FROM dual;