【问题标题】:Count number of users from a certain country统计某个国家的用户数
【发布时间】:2010-09-22 20:27:57
【问题描述】:

我有一个用户表,在这个表中我有一个国家字段,说明这些人来自哪里(即“瑞典”、“意大利”……)。如何执行 SQL 查询以获得类似的内容:

Country     Number
Sweden      10
Italy       50
...         ...

用户从我提供给他们的列表中选择他们的国家,但该列表确实很大,所以如果有一个 SQL 查询可以避免使用该列表,那就太好了,即在数据库中查找并只返回那些国家它们在数据库中,因为例如我没有来自巴巴多斯的人,即使我在注册表单的国家/地区选择字段中有该选项:)

提前致谢!

【问题讨论】:

    标签: sql count


    【解决方案1】:

    这会给你想要的。但是您可能想要缓存查询的结果。对于很多用户来说,这是一个相当繁重的查询。

    SELECT
        country,
        COUNT(*)
    FROM
        users
    GROUP BY
        country
    

    也许更好的主意是(假设您不需要计数)像这样进行:

    SELECT
        DISTINCT country
    FROM
        users
    

    【讨论】:

      【解决方案2】:

      如果国家名称在用户表中,请尝试以下操作:

      SELECT Country, COUNT (*) AS Number
      FROM Users
      GROUP BY Country
      ORDER BY Country
      

      如果国家/地区名称在国家/地区表中,则必须加入

      SELECT Contries.CountryName, Count (*) AS Number
      FROM Users
      INNER JOIN Countries
          ON Users.CountryId = Countries.CountryId
      GROUP BY Countries.CountryName
      ORDER BY Countries.CountryName
      

      【讨论】:

      • +1 或左加入国家,如果有用户没有有效的国家 ID。
      【解决方案3】:

      听起来你想要这样的东西......?

      SELECT Country, COUNT(*) AS Number
      FROM Users
      GROUP BY Country
      

      【讨论】:

        【解决方案4】:

        这很简单:

        SELECT
            Country, COUNT(*) AS 'Number'
        FROM
             YourTable
        GROUP BY
            Country
        ORDER BY
            Country
        

        您只需按国家/地区对数据进行分组并计算每个国家/地区的条目。

        或者,如果您希望它们按访问者数量排序,请使用不同的 ORDER BY 子句:

        SELECT
            Country, COUNT(*) AS 'Number'
        FROM
             YourTable
        GROUP BY
            Country
        ORDER BY
            COUNT(*) DESC
        

        【讨论】:

          【解决方案5】:

          如果您想要每个国家/地区的计数:

          select country, count(*) from users group by country;
          

          如果您只想要可能的值:

          select distinct country from users;
          

          【讨论】:

            【解决方案6】:

            选择 BillingCountry,COUNT(*) 作为发票 从发票 按计费国家分组 ORDER BY Invoices DESC

            【讨论】:

            • 请考虑添加一些 cmets(不仅是代码),还请考虑将代码格式化为代码(使用 markdown 语法)
            猜你喜欢
            • 2020-07-11
            • 1970-01-01
            • 2023-03-15
            • 1970-01-01
            • 1970-01-01
            • 2015-06-19
            • 2011-07-03
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多