case 表示式是 sql 裡非常重要而且使用起來非常便利的技術,我們應該學會用它來描述條件分支。
本節將通過行列轉換、已有資料重分組(分類)、與約束的結合使用、針對聚合結果的條件分支等例題,
來介紹 case 表示式的用法。
引自《sql高階教程》
create table `demo` (
`id` int(11) not null auto_increment,
`name` varchar(32) default null,
`create_time` datetime default null,
`***` char(1) default null,
primary key (`id`),
key `nameindex` (`name`),
fulltext key `name` (`name`)
) engine=innodb auto_increment=7 default charset=utf8mb4 |
insert into `demo`.`demo`(`id`, `name`, `create_time`, `***`) values (1, 'zhangsan', '2020-06-01 23:23:52', '1');
insert into `demo`.`demo`(`id`, `name`, `create_time`, `***`) values (2, 'lisi', '2020-06-01 23:23:52', '0');
insert into `demo`.`demo`(`id`, `name`, `create_time`, `***`) values (3, 'wangwu', '2020-07-01 23:23:52', '0');
insert into `demo`.`demo`(`id`, `name`, `create_time`, `***`) values (4, 'zhaosi', '2020-05-01 23:23:52', '2');
insert into `demo`.`demo`(`id`, `name`, `create_time`, `***`) values (5, 'libai', '2020-07-08 13:33:38', '0');
insert into `demo`.`demo`(`id`, `name`, `create_time`, `***`) values (6, 'bajie', '2020-04-01 13:34:53', '1');
根據下面使用者表,統計最近2個月建立的使用者數,其他月份建立使用者顯示「其他」
統計結果
簡單 case 表示式
case ***
when ' 1 ' then ' 男 '
when ' 0 ' then ' 女 '
else ' 其他 ' end
select case
when date_format(create_time, '%y-%m') = '2020-07' then '2020-07'
when date_format(create_time, '%y-%m') = '2020-06' then '2020-06'
else '其他'
end as month, count(create_time) as num
from demo
group by case
when date_format(create_time, '%y-%m') = '2020-07' then '2020-07'
when date_format(create_time, '%y-%m') = '2020-06' then '2020-06'
else '其他'
endorder by create_time desc
說明:如果遇到沒有資料月份也要顯示,可以使用**解決,保持sql語句的簡潔性。 mysql 按照天 周 月 年 統計資料
mysql date 函式 date format 函式用於以不同的格式顯示日期 時間資料。date format date,format date 引數是合法的日期。format 規定日期 時間的輸出格式。可以使用的格式有 格式描述 a縮寫星期名 b縮寫月名 c月,數值 d帶有英文本首的月中的天 ...
mysql按周統計資料
主要就是使用date format這個方法 select date format createtime,y u weeks,count count from user group by weeks order by weeks desc u 周 00 53 星期日是一周的第一天 u 周 00 53 ...
MySQL列轉行統計資料
筆者在開發的過程中遇到了這樣的問題。其中item id是固定的字典。值是死的。其中item id 等於 1,2,3的值是每乙個work quoted id都需要相乘的。相當於乙份訂單人工費和施工人數以及施工天數都是一定存在的並且是相乘的關係。其他的item id的值是需要相加的。所以,運算的規則是 ...