【问题标题】:Count & Tabulate Matching Records by Month按月计算和制表匹配记录
【发布时间】:2017-08-17 14:04:51
【问题描述】:

Rookie 需要一点帮助。有人可以提供一个查询来轻松计数,然后按月份记录匹配两个条件的列表,以避免使用像这样笨拙的重复代码...

SELECT 
SUM( CASE  
    WHEN extract( YEAR FROM  `date` ) =  "2017" 
    AND extract( MONTH FROM  `date` ) =  "07"
    AND  `conditionA` =  "A" 
    AND  `conditionB` =  "B" 
    THEN 1 else 0 END ) 
AS 2017_07

SUM( CASE  
    WHEN extract( YEAR FROM  `date` ) =  "2017" 
    AND extract( MONTH FROM  `date` ) =  "08"
    AND  `conditionA` =  "A" 
    AND  `conditionB` =  "B" 
    THEN 1 else 0 END ) 
AS 2017_08

SUM( CASE  
    WHEN extract( YEAR FROM  `date` ) =  "2017" 
    AND extract( MONTH FROM  `date` ) =  "09"
    AND  `conditionA` =  "A" 
    AND  `conditionB` =  "B" 
    THEN 1 else 0 END ) 
AS 2017_09

FROM  `datatable`

【问题讨论】:

  • 请查看此链接(spaghettidba.com/2015/04/24/…) 了解更多关于如何改进问题和不要发布图片的信息
  • 谢谢。我完全赞成提出更好的问题,但需要澄清一下我应该做些什么不同的事情。我的问题看起来很简洁,我发布了一个格式化的查询。我收到了一个直接的、准确的问题解决方案,尽管它是基本的。你是说我应该为这么简单的事情发布表格数据吗?
  • 如果你可以看看我发布的链接,它对你有帮助..你没有发布任何表格数据,预期结果,当前结果

标签: sql count extract multiple-conditions


【解决方案1】:

将数据放入行,而不是列:

SELECT extract( YEAR FROM  `date` ) as yyyy, extract( MONTH FROM  `date` ) as mm,
       COUNT(*)
FROM datatable
WHERE `conditionA` =  'A' AND  `conditionB` =  'B'
GROUP BY extract( YEAR FROM  `date` ), extract( MONTH FROM  `date` )
ORDER BY yyyy, mm ;

【讨论】:

  • 完美。谢谢!
猜你喜欢
  • 2021-02-06
  • 2015-04-26
  • 1970-01-01
  • 1970-01-01
  • 2022-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多