我想根据名为user
和country
的两个表格的数据生成图表,以显示每个国家/地区的用户数量。
在user
中,这些是相关字段
user_id: INT , country_id: INT
在country
中,这些是相关字段
country_id: INT , country_name: VARCHAR(45)
执行SELECT country_id, COUNT( * ) FROM user GROUP BY country_id
时,结果就是这样。 COUNT(*)
列显示了每个国家/地区的用户数量,其中包含ID为1和2的2个国家/地区。我想在此结果中生成一个图表,而不是在一个国家/地区上显示country_id
轴,我想要检索country_name
。我该怎么做?
+------+--------+--------+
| country_id | COUNT(*) |
+------+--------+--------+
| 1 | 100 |
| 2 | 157 |
| 3 | 99 |
+------+--------+--------+
答案 0 :(得分:1)
简单连接就足够了
SELECT c.country_name, COUNT(u.user_id) as user_count
FROM country c
INNER JOIN users u ON c.country_id = u.country_id
GROUP BY c.country_name
对于图表,我建议Highcharts。您只需要将数据导出为JSON,例如
series: [{
data: [
['USA', 100],
['Australia', 157],
['New Zealand', 99]
]
}]
答案 1 :(得分:0)
尝试此查询
select a.country_id, a.country_name,b.totaluser from country a
join(
SELECT country_id, COUNT( * ) as totaluser FROM user GROUP BY country_id) b on a.country_id=b.country_id
答案 2 :(得分:0)
SELECT a.name, COUNT(b.user_id) as From_Each_Country
FROM country a INNER JOIN Users b
INNER JOIN users u
ON a.country_id = b.country_id
GROUP BY a.name
答案 3 :(得分:-1)
当您说"生成图表"时,我不知道您的意思,但要将国家/地区名称与您可能认为是加入的计数相关联
SELECT country.country_name, COUNT( user.user_id ) FROM user
join country on user.country_id=country.country_id
GROUP BY country.country_name
我没有您的数据,所以我无法尝试。
编辑
抱歉,这是一个错字......