mysql数据透视或转置时的值计数

zpf6vheq  于 2021-06-20  发布在  Mysql
关注(0)|答案(3)|浏览(373)

这个问题在这里已经有答案了

如何在mysql中返回pivot表输出(9个答案)
两年前关门了。
我的数据库里有一个表

  1. +------+------+----------+
  2. | id | dept | location |
  3. +------+------+----------+
  4. | 1 | eee | chennai |
  5. | 2 | ece | chennai |
  6. | 3 | eee | chennai |
  7. | 4 | ece | chennai |
  8. | 5 | eee | cbe |
  9. | 6 | ece | trichy |
  10. | 7 | mech | madurai |
  11. +------+------+----------+

我需要换位一列时的id计数。有人能给我建议一下查询结果吗

  1. +---------+------+-----+------+
  2. | location| eee | ece | mech |
  3. +---------+------+-----+------+
  4. | chennai | 2 | 2 | 0 |
  5. | cbe | 1 | 0 | 0 |
  6. | trichy | 0 | 1 | 0 |
  7. | madurai | 0 | 0 | 1 |
  8. +---------+------+-----+------+

谢谢你的帮助

cuxqih21

cuxqih211#

尝试 SUMCASE ```
create table test(id INT, dept VARCHAR(20), location VARCHAR(100))
insert into test values
(1,'eee','chennai'),
(2,'ece','chennai'),
(3,'eee','chennai'),
(4,'ece','chennai'),
(5,'eee','cbe'),
(6,'ece','trichy'),
(7,'mech','madurai')

SELECT
location AS city,
SUM(CASE WHEN dept = 'eee' THEN 1 ELSE 0 END) eee,
SUM(CASE WHEN dept = 'ece' THEN 1 ELSE 0 END) ece,
SUM(CASE WHEN dept = 'mech' THEN 1 ELSE 0 END) mech
FROM test
GROUP BY location

  1. 输出

city eee ece mech
cbe 1 0 0
chennai 2 2 0
madurai 0 0 1
trichy 0 1 0

展开查看全部
knsnq2tg

knsnq2tg2#

  1. select location as city,
  2. sum(dept = 'eee') as eee,
  3. sum(dept = 'ece') as ece,
  4. sum(dept = 'mech') as mech
  5. from your_table
  6. group by location
lyfkaqu1

lyfkaqu13#

  1. CREATE TABLE #TABLE1
  2. ([ID] INT, [DEPT] VARCHAR(4), [LOCATION] VARCHAR(7))
  3. ;
  4. INSERT INTO #TABLE1
  5. ([ID], [DEPT], [LOCATION])
  6. VALUES
  7. (1, 'EEE', 'CHENNAI'),
  8. (2, 'ECE', 'CHENNAI'),
  9. (3, 'EEE', 'CHENNAI'),
  10. (4, 'ECE', 'CHENNAI'),
  11. (5, 'EEE', 'CBE'),
  12. (6, 'ECE', 'TRICHY'),
  13. (7, 'MECH', 'MADURAI')
  14. ;
  15. SELECT [LOCATION], COUNT(CASE WHEN DEPT = 'EEE' THEN [DEPT] END ) EEE ,
  16. COUNT(CASE WHEN DEPT = 'ECE' THEN DEPT END ) ECE
  17. ,COUNT(CASE WHEN DEPT = 'MECH' THEN DEPT END ) MECH FROM #TABLE1
  18. GROUP BY [LOCATION]

输出

  1. LOCATION EEE ECE MECH
  2. CBE 1 0 0
  3. CHENNAI 2 2 0
  4. MADURAI 0 0 1
  5. TRICHY 0 1 0
展开查看全部

相关问题