【问题标题】:MySQL Select Case - Comparison Between Two TablesMySQL 选择案例 - 两个表之间的比较
【发布时间】:2017-04-14 20:00:27
【问题描述】:

我有两个类似的表:

Table: case

---------------------------------------------------
| id |  company | managed |    time    |  client  |
---------------------------------------------------
| 1  |  apple   |   yes   | 1412643785 |    no    |
---------------------------------------------------
| 2  |  barilla |   no    | 1412643785 |    no    |
---------------------------------------------------
| 3  |  google  |   no    | 1412643785 |   yes    |
---------------------------------------------------
| 4  |  google  |   yes   | 1412643785 |   yes    |
---------------------------------------------------
| 5  |  google  |   no    | 1412643785 |   yes    |
---------------------------------------------------


Table: language

---------------------------
| id | company  |  lang   |
---------------------------
| 1  |  apple   |   EN    |
---------------------------
| 2  |  barilla |   IT    |
---------------------------
| 3  |  google  |   EN    |
---------------------------

我已经从这个平板电脑创建了统计数据/图形,我每个月都会提取以下信息: * 每月客户案例数 * 每月处理的案件数量 * 每月病例总数 * 每月意大利公司案例数

前三点我没有问题,我做了这个查询:

SELECT FROM_UNIXTIME(time, '%Y-%M') as 'Month', 
    COUNT(CASE WHEN client = 'yes' THEN 1 ELSE NULL END) as 'Reports of a customer,
    COUNT(CASE WHEN managed = 'yes' THEN 1 ELSE NULL END) as 'Managed cases',
    COUNT(id) as 'Total reports'
FROM case
GROUP BY FROM_UNIXTIME(time, '%Y-%M')
ORDER BY FROM_UNIXTIME(time, '%Y-%m')

但是如何提取意大利公司每月管理的案件数量?

我试图添加这部分查询但没有去...

COUNT(CASE WHEN case.company = language.company AND language.lang = 'IT'  THEN 1 ELSE NULL END) as 'Italian Case',

你能帮帮我吗?谢谢

【问题讨论】:

  • 您确实需要加入语言表。

标签: mysql sql select case


【解决方案1】:

你的想法是对的,只需要加入额外的表:

SELECT FROM_UNIXTIME(t.time, '%Y-%M') as 'Month', 
    COUNT(CASE WHEN t.client = 'yes' THEN 1 END) as 'Reports of a customer',
    COUNT(CASE WHEN t.managed = 'yes' THEN 1 END) as 'Managed cases',
    COUNT(t.id) as 'Total reports',
    COUNT(CASE WHEN language.lang = 'IT'  THEN 1 END) as 'Italian Case',
FROM case t
JOIN language ON language.company = t.company
GROUP BY FROM_UNIXTIME(t.time, '%Y-%M')
ORDER BY FROM_UNIXTIME(t.time, '%Y-%m')

请注意,我已从您的案例中删除了 ELSE NULL,因为它是默认设置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多