luojie-

基础知识

COUNT()函数

函数返回匹配指定条件的行数。

SQL COUNT() 语法

  1. SQL COUNT(column_name) 语法
    COUNT(column_name) 函数返回指定列的值的数目(NULL 不计入):
    SELECT COUNT(column_name) FROM table_nam
  2. SQL COUNT(*) 语法
    COUNT(*) 函数返回表中的记录数:
    SELECT COUNT(*) FROM table_name
  3. SQL COUNT(DISTINCT column_name) 语法
    COUNT(DISTINCT column_name) 函数返回指定列的不同值的数目:
    SELECT COUNT(DISTINCT column_name) FROM table_name

Case When Then

Case具有两种格式。简单Case函数和Case搜索函数。
第一种 格式 : 简单Case函数 :
格式说明

    case 列名

    when 条件值1 then 选择项1

    when 条件值2 then 选项2…….

    else 默认值 end

例:

select 
     case   job_level
     when    \'1\'     then    \'1111\'
     when   \'2\'     then    \'222\'
     when   \'3\'     then    \'333\'
     else   \'eee\' end
from     dbo.employee

第二种 格式 :Case搜索函数

格式说明
    case
    when 列名= 条件值1 then 选择项1
    when 列名=条件值2 then 选项2…….
    else 默认值 end

例如:

update employee
    set e_wage =
    case
        when   job_level = \'1\'   then e_wage*1
        when   job_level = \'2\'   then e_wage*2
        when   job_level = \'3\'   then e_wage*3
    else  e_wage*4 
end

IFNULL函数用法

MySQL IFNULL函数是MySQL控制流函数之一,它接受两个参数,如果不是NULL,则返回第一个参数。 否则,IFNULL函数返回第二个参数。
两个参数可以是文字值或表达式。
以下说明了IFNULL函数的语法:
IFNULL(expression_1,expression_2);
如果expression_1不为NULL,则IFNULL函数返回expression_1; 否则返回expression_2的结果。

复杂统计

我们有一个复杂的统计,统计出各单位以各种方式办理的案件的案件
danban形式CHECKOPTION=’danban’,单位id为UNDERTAKEUNITID
huiban形式包含zhuban和xieban
COUNDERTAKEUNITID为xieban单位id
UNDERTAKEUNITID为zhuban的id
fenban形式c.CHECKOPTION=’fenban’ ,单位id为UNDERTAKEUNITID

我们要统计出
办理单位统计

SELECT c.unitid,c.unit,
COUNT(CASE WHEN c.CHECKOPTION=\'danban\' then 1 else NULL END) as danban,
COUNT(CASE WHEN c.CHECKOPTION=\'huiban\' and c.COUNDERTAKEUNITID is not NULL then 1 else NULL END) as xieban,
COUNT(CASE WHEN c.CHECKOPTION=\'huiban\' and c.UNDERTAKEUNITID is not NULL then 1 else NULL END) as zhuban,
COUNT(CASE WHEN c.CHECKOPTION=\'fenban\' then 1 else NULL END) as fenban
from 
(
    SELECT
    a.UNDERTAKEUNIT,a.UNDERTAKEUNITID,a.COUNDERTAKEUNIT,a.COUNDERTAKEUNITID,a.CHECKOPTION,
    IFNULL(a.COUNDERTAKEUNITID,a.UNDERTAKEUNITID) as unitid,
    IFNULL(a.COUNDERTAKEUNIT,a.UNDERTAKEUNIT)as unit
    FROM
        unit_undertakeinfo a  
) c
GROUP BY c.unitid

转载自:https://blog.csdn.net/u010121228/article/details/79895076?utm_medium=distribute.pc_relevant.none-task-blog-OPENSEARCH-2.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-OPENSEARCH-2.control

分类:

技术点:

相关文章:

  • 2022-02-24
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-10-03
  • 2022-12-23
相关资源
相似解决方案