Sql 带有GROUPBY和Case语句的子查询
我有两个表,一个是国家表,另一个是阈值表 Country表中有如下列和数据:Sql 带有GROUPBY和Case语句的子查询,sql,oracle,group-by,subquery,case,Sql,Oracle,Group By,Subquery,Case,我有两个表,一个是国家表,另一个是阈值表 Country表中有如下列和数据: ID国家计数年份 00001印度2002011 00001印度4002013 00001日本10002011 00001日本5502013 00001中国4002011 阈值表有如下数据: ID低值高值 000015001000 这意味着如果计数>=500则低,如果计数>500和=1000则高 我想要这样的结果: 国家计数阈值低值高值 印度600中等5001000 日本1550高5001000 China400Low5
ID
国家
计数
年份
00001
印度
200
2011
00001
印度
400
2013
00001
日本
1000
2011
00001
日本
550
2013
00001
中国
400
2011
阈值表有如下数据:
ID
低值
高值
00001
500
1000
这意味着如果
计数>=500
则低,如果计数>500和<1000
中等,如果计数>=1000
则高
我想要这样的结果:
国家
计数
阈值
低值
高值
印度
600
中等500
1000
日本
1550高500
1000
China
400
Low
500
1000
所以我想写一个
SQL查询
我已经在使用此查询:
SELECT C.Country,C.Count
,CASE WHEN C.Count <= T.Low_Value THEN 'Low' WHEN C.Count BETWEEN T.High_Value AND T.Low_Value THEN 'Medium' ELSE 'High' END AS Threshold,
T.Low_Value, T.High_Value FROM
(SELECT ID,Country,Sum(Count) AS Count
FROM Country
WHERE ID=00001
GROUP BY ID,Country) C
JOIN Threshold T
ON C.ID = T.ID
选择C.国家/地区、C.计数
,C.CountCount
为保留字时的大小写。选择其他别名或在别名周围使用双引号
SELECT C.Country,
C."Count",
CASE WHEN C."Count" <= T.Low_Value THEN 'Low'
WHEN C."Count" BETWEEN T.High_Value AND T.Low_Value THEN 'Medium'
ELSE 'High' END AS Threshold,
T.Low_Value,
T.High_Value
FROM (
SELECT ID,Country,Sum("Count") AS "Count"
FROM Country
WHERE ID=00001
GROUP BY ID,Country
) C
JOIN Threshold T
ON C.ID = T.ID
选择C.国家/地区,
C.“计数”,
当C.“Count”时,可使用以下命令执行:
SELECT Country
,Total
,CASE WHEN Total <= Low_Value THEN 'Low'
WHEN Total BETWEEN Low_Value AND High_Value THEN 'Medium'
ELSE 'High' END AS Threshold
FROM (SELECT ID
,Country
,Low_Value
,High_Value
,SUM(Count) Total
FROM (SELECT C.ID
,C.Country
,C.Count
,T.Low_Value
,T.High_Value
FROM Country C JOIN Threshold T
ON C.ID=T.ID
WHERE C.ID =00001)
GROUP BY Country,Low_Value,High_Value)
选择国家/地区
全部的
,CASE WHEN-Total这是一个输入错误:)我并没有完全使用这个查询,我使用了Count来理解。我没有使用Count作为别名。内部查询正在运行。这是一个case表达式,不是case语句。