oracle的case when语句,oracle的case when是什么意思

  oracle的case when语句,oracle的case when是什么意思

  示例:(1)查询用户表中的数据。

  select u.id,u.realname,U . SEX from users u

  查询结果如下

  ID实名性别

  10082松XX

  2 10084林XX 1

  西XX街3号10087号

  10100胡XX

  5 10102龙XX 1

  .

  (2)上表结果中的‘性别’用代码表示,希望代码用中文表示。您可以在语句中使用CASE语句。

  选择你的身份证,你的真实姓名,你的性别,

  (案例u.sex

  当1时,则为“男性”

  当2是“女性”时

  否则为“空”

  结束

  )性别

  来自用户

  u;查询结果

  ID真实姓名性别性别

  10082松XX空

  2 10084林XX 1男

  3 10087西XX是空的

  10100胡XX空。

  10102龙XX 1男

  .

  如果你不想让‘性别’列出现在列表中,声明如下

  选择u.id,u.realname,

  (案例u.sex

  当1时,则为“男性”

  那么当2

  女性

  否则为“空”

  结束

  )性别

  来自用户u;(3)通过和案例相结合,可以实现分段统计。

  现在举个例子,我想统计一下上表中所有性别的人数。sql语句如下所示

  挑选

  Sum (case u. sex当1然后1 else 0 end)男,

  sum( case u.sex

  当2然后1否则0结束)母,

  总和(当u.sex 1和

  U.sex 2 then 1 else 0 end)性别为空。

  来自用户

  u;执行结果如下

  男性性别空白。

  1 41 15 0

  如果学校有几千个参加考试的学生,想统计60分以下、60-80分、80-100分的学生总数,可以用这样的语句。只是条件不同而已。

  (4)如果sum和case when与group by结合使用,可以进行分组和分段统计。

  比如我想统计users表中每个创建者创建的男、女、性别用户的总数(数据表中有一个字段creator_ID,表示创建者的ID),语句如下

  Select u.creator_ID创建者ID,

  sum(case u . sex when 1 then 1 else 0 end)

  男性,

  sum(case u . sex when 2 then 1 else 0 end)女

  总和(当

  U.sex 1和u.sex 2然后1 else 0 end)性别为空。

  来自用户

  u

  group by u.creator _ id查询结果如下

  创建者ID男女性别为空。

  1 0 0 0

  2 10000 35 12 0

  3 11100 0 0 0

  4 11060 0 0 0

  5 11040 0 0 0

  6 11080 2 0 0

  7 10281 3 3 0

  8 10580 1 0 0

  上例中只有一个分组字段,实现了一级统计;如果有多个分组字段,应该可以实现多级统计。如果有居民统计表,里面有人口的信息,人口居住的城市,区,街道等。如果想统计深圳的人口数据,实现以下统计结果,可以通过多级分组来实现。

  划分男性居民和女性居民

  深圳

  南山区

  粤海

  科学与技术

  宝安区

  新安

  当…时格的语法

  情况

  当某件事

  那么什么时候最好

  一些东西b

  其他

  一些东西

  结束

oracle的case when语句,oracle的case when是什么意思