我正在为大学开发一个PHP应用程序,它假装我向/从国家/地区购买和转售特定物品。我有一个表格,其中包含交易ID和制作它们的国家/地区的名称。
我一直在尝试计算特定国家/地区名称在数据库表中出现的次数,然后在网页上打印出一个表格,显示每个国家/地区的名称和它们在表格中出现的次数,如下所示,但我在任何地方都找不到任何此类事情的例子,它们总是太不同而没有太大帮助。我还想按最大到最小计数对表格进行排序,并且还可以限制使用单选按钮显示的国家/地区数量(我已经在工作了)。
国家名称 |销售数量伯利兹 | 10巴西 | 6喀麦隆 | 64哥伦比亚 | 23哥斯达黎加 | 47
您需要选择国家/地区并计数,然后按国家/地区分组。如果你想订购它,你也需要添加它。
SELECT
countryName,
count(*) as numberOfSales
FROM
sales
GROUP BY
countryName
ORDER BY
numberOfSales DESC
此查询在结果中将有 2 列。国家/地区名称及其根据分组出现的次数。我们按国家/地区名称列对所有记录进行分组。在查询中,我们将列命名为 numberOfSales,因此我们可以在排序时使用它,以便国家/地区在 numberOfSales 中按从大到小的顺序排列。
如果您的数据库中有两个表(在我的例子中为 MySql),一个用于存储不同的国家/地区,另一个用于销售/订单。
表 countries
:
id INT
country VARHCAR(255)
表: sales
:
id INT
country_id INT
title VARCHAR(255)
这里两个表之间存在 1:多关系。一个国家/地区可以有多个销售,但一个销售只能属于一个国家/地区。
然后,您可以通过运行以下 SQL 查询来获取特定国家/地区的销售数量。如果您想查找丹麦的销售数量,您可以执行以下操作:
SELECT countries.country, COUNT(*) AS numberOfSales
FROM countries
JOIN sales
ON sales.country_id = countries.id
WHERE countries.country = 'denmark';
如果要查看每个国家/地区的销售总数,可以使用以下 SQL 查询:
SELECT countries.country, COUNT(*) AS numberOfSales
FROM countries
JOIN sales
ON sales.country_id = countries.id
GROUP BY countries.country;
在这里,GROUP BY
子句将获取countries
表中每个国家/地区的结果。如有必要,您可以添加LIMIT
子句。
我希望这不会使事情变得过于复杂。你稍后会通过使用两个表格来感谢我(我不知道你是否已经这样做了。如果你这样做,很好)。
与在 MySql 中计算相同行相关:使用 PHP 计算 MySQL 中相同行数
此致敬意。