免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 9704 | 回复: 9
打印 上一主题 下一主题

求救有关显示count(*) group by的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-10-25 16:38 |只看该作者 |倒序浏览
我在mysql 下执行如下命令:select use_city,count(*) from data where os="Windows 2003 Std" group by use_city;得到的结果为:
+-----------+----------+
| use_city  | count(*) |
+-----------+----------+
| Beijing   |        2 |
| Chengdu   |        2 |
| Chongqing |        1 |
| Dalian    |        2 |
| Fuzhou    |        2 |
| Guangzhou |        2 |
| Hangzhou  |        2 |
| Nanjing   |        2 |
| Shanghai  |       21 |
| Shenyang  |        5 |
| Wuhan     |        1 |
+-----------+----------+
11 rows in set (0.01 sec)

共有11条记录,问题是其中有一个城市“Tianjing”是没有记录符合的,怎么让他显示成
+-----------+----------+
| use_city  | count(*) |
+-----------+----------+
| Beijing   |        2 |
| Chengdu   |        2 |
| Chongqing |        1 |
| Dalian    |        2 |
| Fuzhou    |        2 |
| Guangzhou |        2 |
| Hangzhou  |        2 |
| Nanjing   |        2 |
| Shanghai  |       21 |
| Tianjing    |       0   |
| Shenyang  |        5 |
| Wuhan     |        1 |
+-----------+----------+

让它count为0的记录也显示出来,因为少这一样一条记录的话,对我后面程序影响很大,望大侠们帮忙,非常感谢!

论坛徽章:
0
2 [报告]
发表于 2007-10-25 18:50 |只看该作者
left join试试。

[ 本帖最后由 wildlily980 于 2007-10-25 18:54 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2007-10-25 19:25 |只看该作者
怎么写啊?我这是同一张表哎。

论坛徽章:
0
4 [报告]
发表于 2007-10-25 22:26 |只看该作者
试试这个:
SELECT
    use_city,
    COUNT(CASE use_city='Windows 2003 Std' THEN NULL ELSE 1 END)
FROM
    data
GROUP BY
    use_city

论坛徽章:
0
5 [报告]
发表于 2007-10-25 22:34 |只看该作者
或者这个
SELECT
    L.use_city,
    B.count
FROM
    (    
        SELECT
            DISTINCT use_city
        FROM
            data
    ) AS L
LEFT JOIN
    (
        SELECT
            use_city,
            COUNT(*) AS count
        FROM
            data
        GROUP BY
            use_city
    ) AS R
ON L.use_city=R.use_city


[ 本帖最后由 lovetide 于 2007-10-25 22:37 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2007-10-26 09:33 |只看该作者
都被写完了,没得写了
不过楼上有一处笔误...

论坛徽章:
0
7 [报告]
发表于 2007-10-26 13:19 |只看该作者
楼上的楼上的楼上也有错误:wink:

论坛徽章:
0
8 [报告]
发表于 2007-10-26 13:29 |只看该作者
原帖由 sunnyfun 于 2007-10-26 09:33 发表
都被写完了,没得写了
不过楼上有一处笔误...

原帖由 showsa 于 2007-10-26 13:19 发表
楼上的楼上的楼上也有错误:wink:


谢谢两位火眼金睛的提醒。
更正:
SELECT
    use_city,
    COUNT(CASE os='Windows 2003 Std' THEN NULL ELSE 1 END)
FROM
    data
GROUP BY
    use_city


SELECT
    L.use_city,
    R.count
FROM
    (   
        SELECT
            DISTINCT use_city
        FROM
            data
    ) AS L
LEFT JOIN
    (
        SELECT
            use_city,
            COUNT(*) AS count
        FROM
            data
        GROUP BY
            use_city
    ) AS R
ON L.use_city=R.use_city

论坛徽章:
0
9 [报告]
发表于 2007-10-26 13:38 |只看该作者
COUNT(CASE WHEN os='Windows 2003 Std' THEN 1 ELSE NULL END)

论坛徽章:
0
10 [报告]
发表于 2007-10-26 21:41 |只看该作者
原帖由 rardge 于 2007-10-26 13:38 发表
COUNT(CASE WHEN os='Windows 2003 Std' THEN 1 ELSE NULL END)


为什么我总犯错……
      
   
   
  
:$:$:$:$:$

再次更正……
SELECT
    use_city,
    COUNT(CASE WHEN os='Windows 2003 Std' THEN 1 ELSE NULL END)
FROM
    data
GROUP BY
    use_city
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP