spark-sql -e execution cannot have too many count clauses - apache-spark-sql

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

Count the number of column having non zero values

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

Need to break down into day..Right now its rolled up into months

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

How to break my results down into Months

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)

Are these two Spark SQL queries the same in terms of logic?

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.

missing expression error

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;