use*_*858 5 php mysql sql count distinct
我有下表,我想执行以下操作:
计算每个项目在表格中出现的次数
计算DISTINCT
物品的数量
按名称对项目进行分组
+-------+---------+
| id | names |
+-------+---------+
| 1 | Apple |
| 2 | Orange |
| 3 | Grape |
| 4 | Apple |
| 5 | Apple |
| 6 | Orange |
| 7 | Apple |
| 8 | Grape |
+-------+---------+
Run Code Online (Sandbox Code Playgroud)
对于 1. 和 3. 点,我有以下查询效果很好:
SELECT * ,
COUNT(names) as count_name,
FROM tbl_products WHERE type = '1'
GROUP BY names
Run Code Online (Sandbox Code Playgroud)
所以我得到:
Apple (4)
Orange (2)
Grape (2)
Run Code Online (Sandbox Code Playgroud)现在我还想计算按行分组的数量并添加一行来计算不同的元素,但是存在一些问题,因为 MySQL 接受查询但无法输出结果:
SELECT * ,
COUNT(names) as count_name,
COUNT(DISTINCT names) as count_total
FROM tbl_products WHERE type = '1'
GROUP BY names
Run Code Online (Sandbox Code Playgroud)
任何人都可以建议可能是什么问题?
编辑:为了获得更多许可,我想要一张这样的桌子:
+-------+---------+------------+-------------+
| id | names | count_ctg | count_total |
+-------+---------+------------+-------------+
| 1 | Apple | 4 | 3 |
| 2 | Orange | 2 | 3 |
| 3 | Grape | 2 | 3 |
+-------+---------+------------+-------------+
Run Code Online (Sandbox Code Playgroud)
1-.统计每一项在表中出现的次数:
SELECT names, count(names) FROM tbl_products WHERE type = '1' group by names
Run Code Online (Sandbox Code Playgroud)
2-. 表中存在多少个不同的项目:
SELECT DISTINCT names FROM tbl_products WHERE type = '1'
Run Code Online (Sandbox Code Playgroud)
3-. 按名称对项目进行分组:
SELECT count(DISTINCT names) as Total FROM tbl_products WHERE type = '1'
Run Code Online (Sandbox Code Playgroud)
作为您的最后一次编辑(全部合一):
SELECT id, names, count(names), total FROM tbl_products, (select count(distinct names) as total from tbl_products) as total WHERE type = '1' group by names
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4235 次 |
最近记录: |