我们的想法是在结果中输入一个描述用户“类别”的新列。例如,该类别可以是基于用户年龄的“不足18”,“正常”,“超过65”。
也就是说,对于我表中的每个用户,我希望在名为“category”的列中获取其ID和此描述。
你会怎么做?我需要这个,因为数据稍后将转到JSON对象和ExtJS网格以进行可视化。
答案 0 :(得分:4)
由于您的类别是从现有数据派生的数据,因此不鼓励在数据库中使用新列。相反,您可以只将case语句添加到数据库查询中,以根据需要计算类别,或将其放入数据库中的视图中。
查询看起来像这样:
select
...
case when Age < 18 then 'under18'
when Age > 65 then 'over65'
else 'normal' end AS Age_Category
from ...
答案 1 :(得分:0)
在查询级别,这可以使用CASE
表达式完成:
select
user_id,
case when age < 18 then 'under18'
when age <=65 then 'normal'
when age > 65 then 'over65'
else null end as category
from
Users
但是我建议将其从查询级别移动到应用程序级别。您已经拥有了从数据集构造JSON的应用程序逻辑,这将是从年龄值生成类别名称的更合适的位置。
答案 2 :(得分:0)
如果你的DBMS支持它,我会创建一个UDF(用户定义函数),它从表中传入age并返回类别。这具有可重复使用和更清洁的优点。如果这是针对一个查询,则只使用CASE
语句。