Сетка подсчета по строкам и столбцам в SQL - PullRequest
0 голосов
/ 15 мая 2018

Я действительно изо всех сил пытаюсь создать простую сетку, которую я могу предоставить нетехническим членам команды, чтобы они могли легко искать количество людей в нашей базе данных клиентов SQL на основе любых двух демографических характеристик.

Например, у нас часто возникают вопросы типа «сколько людей в базе данных - мужчины в возрасте 36–45 лет» или «сколько людей в возрасте 18–25 лет в нашей базе данных можно отправить по электронной почте». С помощью сетки поиска они смогут ответить на них сами.

Фактические данные имеют много переменных, поэтому реальная сетка, вероятно, будет большой, но в упрощенном примере таблицы исходных данных имеется 1 строка на клиента (~ 3 м строк) со следующими столбцами:

party_id        -- Customer ID #
, gender        -- 'Male'/'Female'/'Unknown gender'
, age           -- '18-25'/'26-35'/'36-45'/'46-55'/'56-65'/'66-80'/'Unknown age'
, emailability  -- 'Emailable'/'Not Emailable'

Таблица результатов будет иметь одинаковые строки и столбцы с количеством клиентов в каждой ячейке (т. Е. Количество людей, которые удовлетворяют критериям строки и столбца). В этом примере строки и столбцы будут иметь вид:

Male
Female
Unknown gender
18-25
26-35
36-45
46-55
56-65
66-80
Unknown age
Emailable
Not emailable

Чтобы узнать количество людей, удовлетворяющих любым двум критериям, вам просто нужно найти пересечение в сетке (в первом вопросе выше это пересечение строки: «Мужчина» и столбца: «18- 25 "или строка:" 18-25 "и столбец:" Мужской ").

Не похоже, что это должно быть трудной проблемой, но я в полном замешательстве. Я думал, что это будет решено Pivots, но я не мог найти способ кросс-таблицы более 2 переменных. Скорее всего, SQL также не подходит для этой работы, но сейчас у меня не так много других инструментов, поэтому, если возможно, я бы хотел найти решение SQL, но сообщите мне, если вы знаете лучшие варианты.

Я был удивлен, что не нашел здесь существующего решения, но, возможно, я не использовал правильные условия поиска, поэтому извиняюсь, если на этот вопрос уже был дан ответ.

Спасибо!

- EDIT-- В соответствии с запросом вот несколько примеров данных:

party_id |gender |age     |Emailability  |
---------|-------|--------|--------------|
1        |Male   |18-25   |Not Emailable |
2        |Female |Unknown |Emailable     |
3        |Unknown|36-45   |Emailable     |
4        |Male   |36-45   |Not Emailable |
5        |Male   |56-65   |Emailable     |
6        |Female |26-35   |Emailable     |
7        |Male   |18-25   |Emailable     |
8        |Unknown|18-25   |Not Emailable |
9        |Male   |66-80   |Emailable     |
10       |Female |26-35   |Emailable     |

На основании данных этого примера первые несколько строк заполненной сетки будут выглядеть следующим образом (мне пришлось отбросить столбцы электронной почты из-за ширины страницы, но они также были бы включены):

                   Male Female Unknown Gender 18-25 26-35 36-45 46-55 56-65 66-80
    Male           5    0      0              2     0     1     0     1     1     
    Female         0    3      0              0     2     0     0     0     0       
    Unknown gender 0    0      2              1     0     1     0     0     0     
    18-25
    26-35
    36-45
    46-55
    56-65
    66-80
    Unknown age
    Emailable
    Not emailable

Чтобы пояснить, поскольку я думаю, что это вызвало некоторую путаницу, я не пытаюсь создать представление для других пользователей базы данных - я надеюсь создать вывод, который я могу экспортировать в Excel, чтобы люди, не являющиеся техническими специалистами, могли использовать его как раздаточный материал / шпаргалка. Возможно, эта сетка не может быть настроена так, как планировалось, с использованием только SQL, но из-за размера набора данных и ограниченного количества инструментов я надеюсь, что это можно сделать в SQL. Еще раз спасибо за любые предложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...